Avatar billede melted Nybegynder
04. marts 2003 - 16:00 Der er 8 kommentarer og
1 løsning

Datoformat

Jeg har nogle datofelter i en database hvor nogle står med tid (f.eks. 01-02-2003 11:02:22) og nogle andre felter hvor de er uden tid (f.eks. 01-02-2003).

Jeg vil så gerne kunne søge på nogle forskellige måder hvor jeg kan finde datoer som er før eller efter eller samme dato, men mangler nogle tips til hvordan jeg kan søge efter datoer som også indeholder tid. I nogle situationer vil jeg også få brug for at kunne søge efter datoer der ser sådan ud : 1-2-2003 (altså hvor der ikke står 0 foran 1-cifrede dato og måned).

Databasefeltet kan f.eks. hedde "oprettet" og se sådan ud: 01-02-2003 11:02:22

Jeg skal kunne søge på bl.a. disse måder:
1) oprettet = 4-3-2003
2) oprettet < 4-3-2003
3) oprettet > 04-03-2003
4) oprettet <= 04-03-2003 11:10:10

Nogen der ved hvordan jeg kan gøre det lettest muligt?
Avatar billede eagleeye Praktikant
04. marts 2003 - 16:28 #1
Hvilken datatype er din kolonne ?  Dato/Klokkeslæt eller Tekst?
Avatar billede melted Nybegynder
04. marts 2003 - 16:29 #2
den er date/time i en access database
Avatar billede eagleeye Praktikant
04. marts 2003 - 17:02 #3
Når du søger på = "4-3-2003" som dato vil den finde dem som er sådan her 4-3-2003 og sådan her 04-03-2003, det skulle ikke vøre nogen forskel om der er 0 eller ej.

SQL bruger US/UK format i dato, som er yyyy-mm-dd eller mm-dd-yyyy. Så en søgning efter 4-3-2003 kunne se sådan her ud:

datoStr = "2003-03-04"
SQL = "SELECT * FROM x WHERE Dato = #" & datoStr & "#;"

Den vil dog ikke finde kolonen hvor der også er et tidspunkt 04-03-2003 11:10:10. Hvis den skal finde dem også så skal SQLen se sådan her ud:

datoStr = "2003-03-04"
SQL = "SELECT * FROM x WHERE DateValue(Dato) = #" & datoStr & "#;"
Avatar billede melted Nybegynder
04. marts 2003 - 17:25 #4
Mit største problem er sådan set at jeg ikke kan finde ud af kun at søge i datoerne, hvor der også er tidspunkter i.

Hvis jeg har nogle records med:
01-03-2003 12:12:12
03-12-2003 10:10:10
12-09-2003 11:11:11

Så vil jeg gerne kunne søge kun på datoerne - altså:
Select * from datatabel where oprettet < 01-08-2003

Kan det virkelig passe at SQL bruger US/UK format til at søge, selvom der i databasen står DK format?
Avatar billede eagleeye Praktikant
04. marts 2003 - 17:30 #5
Ja SQL bruger US/UK format selvom databasens format er DK..


Du kan gøre sådan her:
SQL = "SELECT * FROM datatabel WHERE oprettet < #2003-08-01#;"
Avatar billede melted Nybegynder
04. marts 2003 - 18:28 #6
Ser ud til det virker :)
Avatar billede melted Nybegynder
04. marts 2003 - 18:36 #7
Kan bare ikke få det til at virke når jeg skriver "="... virker fint nok med ">"
Avatar billede eagleeye Praktikant
04. marts 2003 - 18:39 #8
Har du DateValue på?

datoStr = "2003-03-04"
SQL = "SELECT * FROM datatabel  WHERE DateValue(oprettet) = #" & datoStr & "#;"
Avatar billede melted Nybegynder
04. marts 2003 - 18:41 #9
Nu har jeg og nu virker det - tak! :)
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