Avatar billede Slettet bruger
08. november 2007 - 14:38 Der er 14 kommentarer og
1 løsning

Vælge en bestemt dato på DATETIME kolonne

Jeg har en kolonne med datetime formatet.

Nu vil jeg gerne vælge de poster som har en bestemt dato... uanset tidspunkt.

Jeg har prøvet SELECT * FROM mintabel WHERE DATE(minDateTimeKolonne) = " & (Dato fra mit ASP script her).

...for at "hive" dato delen ud af datetime. Men uden held.
Avatar billede fennec Nybegynder
08. november 2007 - 14:42 #1
Har du formateret din ASP dato rigtigt?? Altså til 'yyyy-mm-dd' formatet.
Avatar billede Slettet bruger
08. november 2007 - 14:45 #2
Ja... det har virket da kolonnen blot var "date" formatet (har lige lavet den om i databasen)....

Men når jeg beder om at hente alle fra den 2007-11-08 så mener den ikke at "2007-11-08" = "2007-11-08 14:45:24" og det er jo rigtigt.... så hvordan for jeg den til at kun tage dato delen ud... så det bliver "2007-11-08" = "2007-11-08"?
Avatar billede Slettet bruger
08. november 2007 - 14:46 #3
Jeg synes MySQL's dokumentation er meget dårlig... det kan dog være at det siger mere om mine evner end om dokumentationen.
Avatar billede fennec Nybegynder
08. november 2007 - 14:51 #4
Jeg synes nu dokumentationen er meget god, og det er netop date() funktonen, som du har fundet, du skal bruge. Jeg kan dog ikke forstå det ikke virker.

Denne kode burde altså virke (ASP):
myDate = "2007-11-08"
sql = "SELECT * FROM mintabel WHERE DATE(minDateTimeKolonne) = '"& myDate  &"'"
Avatar billede Slettet bruger
08. november 2007 - 14:59 #6
strSQL = "SELECT COUNT(id) AS antal FROM foresporgsel WHERE oprettet_dato = '" & dateToDB(dteAktuelDato) & "'"

Fungerer OK (finder dog ingen poster fordi ingen poster rammer 00.00.00 på en given dato)

strSQL = "SELECT COUNT(id) AS antal FROM foresporgsel WHERE DATE(oprettet_dato) = '" & dateToDB(dteAktuelDato) & "'"

[TCX][MyODBC]You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(oprettet_dato)) = '2007-11-1'' at line 1.
Avatar billede fennec Nybegynder
08. november 2007 - 15:01 #7
Hvad for version af MySQL kører du (3.x, 4.x, 5.0)??
Avatar billede Slettet bruger
08. november 2007 - 15:02 #8
4.0.21-nt
Avatar billede fennec Nybegynder
08. november 2007 - 15:03 #9
Date er først med fra version 4.1.1  :(
Avatar billede Slettet bruger
08. november 2007 - 15:04 #10
Måske må jeg bare lave en Datetime for tid 00.00.00 og tid 23.59.59 og lave en select på alt hvad der ligger imellem på en bestemt dato.
Avatar billede fennec Nybegynder
08. november 2007 - 15:06 #11
Du kan evt bruge DATE_FORMAT i stedet:

where DATE_FORMAT(oprettet_dato, '%Y-%m-%d') = '2007-11-01'
Avatar billede fennec Nybegynder
08. november 2007 - 15:07 #12
Eller en between:
where oprettet_dato between '2007-11-01' and '2007-11-02'
Avatar billede fennec Nybegynder
08. november 2007 - 15:09 #13
Nu så jeg lige din dateToDB funktion ikke rette "1" til "01", så enten skal du ændre den eller rette '%Y-%m-%d' til '%Y-%c-%e'
Avatar billede Slettet bruger
08. november 2007 - 15:16 #14
Perfekt... BETWEEN virker selvom det ikke er så elegant. Læg gerne svar for point. Tak for hjælpen!
Avatar billede fennec Nybegynder
08. november 2007 - 16:25 #15
.o) <-- One Eyed Jack
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
Computerworld tilbyder specialiserede kurser i database-management

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