Avatar billede Slettet bruger
06. februar 2001 - 10:57 Der er 26 kommentarer og
1 løsning

Datoen tættest på

Hvordan kan jeg lave en sql der finder 3 datoer tættest på dags dato og selvfølgelig kun i fremtiden.
Avatar billede kasseper Nybegynder
06. februar 2001 - 10:59 #1
\"select top 3 * from mytable where Mydate > \" & date & \" Order by date
Avatar billede kasseper Nybegynder
06. februar 2001 - 10:59 #2
måske er det :
\"select top 3 * from mytable where Mydate > \" & date & \" Order by date desc\"
Avatar billede slash Nybegynder
06. februar 2001 - 11:19 #3
hvad med:
sql = \"SELECT DATEADD(day, 3, <datofelt>) AS tidfrem FROM <minklyttabel>\"



Avatar billede kasseper Nybegynder
06. februar 2001 - 11:21 #4
og hvis man så har 3 datoer der er om bare 10 min ????
Avatar billede Slettet bruger
06. februar 2001 - 11:26 #5
hvordan skal brugeren indtaste datoen for at få scriptet til at virke?

01-01-01 eller 1. januar 2001 eller 02-23-01
Avatar billede kasseper Nybegynder
06. februar 2001 - 11:28 #6
helt afhængigt af hvordan du har erklæret dine typer i din tabel, hvis det er smalldatetime skal du bruge xx-xx-xx formatet, Ellers kan du se hvordan i regional settings hvordan det er med rækkefølgen af måned og dag og år....
Avatar billede Slettet bruger
06. februar 2001 - 11:38 #7
Mine regional settings siger 06-02-01
Min dato i tabellen er sat til kort datoformat

Men jeg ser alle datoerne alligevel....

Her er lidt kode:

<%SQL1=\"select * from listen where Dato > \" & date & \" Order by Dato desc;\"
Set RS1=Conn.execute(SQL1)%>
<%Do while not RS1.EOF%>
Avatar billede Slettet bruger
06. februar 2001 - 11:39 #8
Jeg ved godt jeg har udeladt top3 * (det er med vilje...
Avatar billede kasseper Nybegynder
06. februar 2001 - 11:42 #9
Ser du også alle de datoer der er før Dato ????
Avatar billede Slettet bruger
06. februar 2001 - 11:52 #10
Ja, desværre
Avatar billede Slettet bruger
06. februar 2001 - 12:00 #11
Du har ikke givet op vel??? :0=)
Avatar billede kasseper Nybegynder
06. februar 2001 - 12:01 #12
hmmm. det lyder da lidt mærkeligt..
prøv : SQL1=\"select * from listen where Dato > \" & date

giver den også alle datoer, både før og efter
Avatar billede kasseper Nybegynder
06. februar 2001 - 12:04 #13
ligger database også på din maskine ????
Avatar billede Slettet bruger
06. februar 2001 - 12:12 #14
jeg prøver...

Min database ligger på min webserver der står hos scannet i kolding
Avatar billede Slettet bruger
06. februar 2001 - 12:13 #15
ahhhh
en lille pære lyser, måske skulle jeg tjekke serverens regional settings

Bare lad som om det ikke er sket OK??:0)
Avatar billede kasseper Nybegynder
06. februar 2001 - 12:19 #16
;)
Avatar billede Slettet bruger
06. februar 2001 - 12:41 #17
det var vist lidt for hurtigt...

Serverens settings er dansk ligesom min maskine...

Avatar billede kasseper Nybegynder
06. februar 2001 - 12:48 #18
hmmm ? hvad gav select * from listen where Dato > \" & date
Avatar billede Slettet bruger
06. februar 2001 - 13:00 #19
det giver samme resultat
Jeg ser begge datoer...
Avatar billede kasseper Nybegynder
06. februar 2001 - 13:12 #20
Jeg har haft samme problem, det er sq meget mystisk....Jeg løste ved at jeg lavede stored procedures....Det er  vist noget med at når man overfører data til din server, så bliver datoformatet lavet om....Du må ikke spørge mig hvorfor...
Men hvis du laver stored procedures ( skal være en SQL server ) skulle det rette problemet...
Avatar billede Slettet bruger
06. februar 2001 - 13:22 #21
Jeg kører det i en access db
Avatar billede kasseper Nybegynder
06. februar 2001 - 13:34 #22
så er jeg bange for at jeg er blank !!!!
Jeg prøver lige at søgelidt på nettet
Avatar billede gandalfthewhite Nybegynder
06. februar 2001 - 14:33 #23
Uanset hvad du gør er det interne dato format i databasen altid gemt i \"amerikansk format\". Dine settings er kun afgørende for hvordan datoen vises.
Danske datoer opfører sig af en eller anden grund altid uforudsigeligt. Nogle gange sker der implicit konvertering af dato andre gange gør der ikke.
Prøv at sætte # rundt om datoen, det for tæller access at det er en dato type.
dvs. SQL1=\"select * from listen where Dato > #\" & date & \"# Order by Dato desc;\"

eller prøv at spørge med US dato format. Det kræver lidt konvertering.

dim sMonth, sDay, sYear, aTmp, date
aTmp = Split(date, \"-\")
\'Dette giver
sDay = aTmp(1)
sMonth = aTmp(2)
sYear = aTmp(3)

sDate = sMonth & \"-\" & sDay & \"-\" & sYear

Prøv at sende dato som dato-format (med #) eller som tekst (med \'). Sidste fremtvinger implicit datokonvertering.
Avatar billede Slettet bruger
06. februar 2001 - 15:56 #24
Ok

Nu har jeg fundet ud af noget af det men jeg har stadig problemer.

Hvis jeg indtaster datoerne i engelsk format a la 02-07-01 så virker mit script men outputtet bliver også på engelsk hvilket danskere jo ikke er vant til. Derfor tænkte jeg at hvis jeg nu formaterede min dato så ville den skrive 7.februar 2001 men det gør den ikke, den skriver 2.juli 2001.

Hvad fanden gør man???
Avatar billede gandalfthewhite Nybegynder
06. februar 2001 - 16:24 #25
Brug den samme split-funktion som jeg skrev i mit tidligere svar til at vende rundt på dag og måned og så anvend FormatDateTime bagefter.
Avatar billede Slettet bruger
07. februar 2001 - 08:21 #26
Det har jeg prøvet på følgende måde skulle det ikke være ok?

<%
dim sMonth, sDay, sYear, aTmp, date
aTmp = Split(date, \"-\")

sDay = aTmp1
sMonth = aTmp2
sYear = aTmp3

dato = sMonth & \"-\" & sDay & \"-\" & sYear
response.write(dato) %>

<%dato = FormatDateTime(RS1(\"Dato\"),vbLongDate)
response.write dato%>
Avatar billede kasseper Nybegynder
07. februar 2001 - 09:21 #27
du kan også bare bruge denne istedet for spilt :

dato = month(dato) & \"-\" & day(dato) & \"-\" & year(dato)
Så slipper du for arrayet....
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester