Avatar billede stenger Nybegynder
30. juni 2008 - 12:54 Der er 9 kommentarer og
1 løsning

Datetime og /

Hej Eksperter!

Jeg skal have fundet alle poster i en table, som er oprettet på en specifik dato.

Til at bruge dette har jeg tænkt mig at gøre noget a lá følgende:

SELECT * FROM tabel WHERE dato LIKE '%6/26/2008%'

Problemet med denne query er at den åbenbart ikke vil acceptere mine / (slashes). Det kager den ud over og giver mig ingen resultater. Har dette noget at gøre med at feltet dato er datetime-format? Kan jeg på nogen måde få lavet en query, hvor den specifikt i feltet dato leder efter den specifikker værdi "6/26/2008"?

Håber i forstår :)

/Stenger
Avatar billede pidgeot Nybegynder
30. juni 2008 - 12:59 #1
Når det er en DATE el. DATETIME, skal du bruge formatet YYYY-MM-DD, da det er det MySQL bruger:

SELECT * FROM tabel WHERE dato LIKE '2008-06-26%'

...men når nu du søger på en dato, skulle jeg mene dette er pænere:

SELECT * FROM tabel WHERE DATE(dato) = '2008-06-26'
Avatar billede stenger Nybegynder
30. juni 2008 - 13:33 #2
Men jeg kan jo direkte læse via en query at formatet i feltet er "6/26/2008"...

Så kan jeg vel ikke få nogen resultater ud ved at bruge dine eksempler, da det datoformat simpelthen ikke eksisterer i databasen? Formatet er 0/0/0000... og det har jeg desværre ikke noget indflydelse på, da det kører via noget CMS.

Men hvordan laver jeg bare en enkelt søgning i det felt på "6/26/2008"? Det er slash (/), som den åbenbart ikke rigtig kan li´.
Avatar billede pidgeot Nybegynder
30. juni 2008 - 13:57 #3
Nej, du kan ikke læse at formatet i databasen er MM/DD/YYYY - for det hverken bruger eller forstår MySQL på egen hånd *-)

Hvis du ser det format er der to muligheder:
1) Du har bedt om at få det ud i det format
2) Det du bruger til at se datoen med formaterer på den måde (du siger selv det er noget CMS, så det er nok tilfældet her)

Formatet i en DATETIME på MySQL er og bliver YYYY-MM-DD HH:MM:SS - og jeg har givet dig SQL'en til at søge på en given dato.
Avatar billede stenger Nybegynder
30. juni 2008 - 14:03 #4
Jeg bruger SQLAdmin til at se formatet med... derudfra læser jeg at det er et datetime-felt og at værdien fremstår med det format, jeg skrev :)

Om der så foregår alt mulig andet hokuspokus bagved må guderne vide. Faktum er at jeg gerne vil ind og checke på værdien i det pågældende felt, men slashes ødelægger det lidt for mig, grundet guderne ved hvad.

Får iøvrigt ingen resultater via dine forslag. Nogen andre gode bud eller er jeg tabt? :)
Avatar billede pidgeot Nybegynder
30. juni 2008 - 14:25 #5
"Om der så foregår alt mulig andet hokuspokus bagved må guderne vide."

Hvis du ser det format, så ja, der foregår noget bagved.

"men slashes ødelægger det lidt for mig, grundet guderne ved hvad."

Som sagt, så er det fordi MySQL ikke fatter det format. Det er ikke raketvidenskab, det her - MySQL fatter kun et format når der er tale om datoer, og alle andre formater kommer enten ved at man eksplicit beder om at få det konverteret (med DATE_FORMAT og STR_TO_DATE), eller ved at det formateres af det der nu engang vil vise dataene *-)

Jeg kan af gode grunde kun forholde mig til de oplysninger du har givet mig, så hvis du ikke får nogle resultater, tyder det på at du ikke har noget med den dato.

Du kunne jo lige overveje at lave en SELECT dato FROM tabel, og så bruge en af de datoer du får retur - i formatet YYYY-MM-DD.
Avatar billede stenger Nybegynder
30. juni 2008 - 14:28 #6
Dette er formatet jeg får ud ved hente tabellen ned, udelukkende via en SELECT:

5/2/2007 11:09:12 AM

Ved ikke om det giver nogen mening. Har prøvet at køre nogen af de kommandoer, du har foreslået, men jeg får bare kun 0 hits på dem.
Avatar billede pidgeot Nybegynder
30. juni 2008 - 14:55 #7
Ud fra det du har sagt indtil videre, så skulle den der gerne komme igen med:

SELECT * FROM tabel WHERE DATE(dato) = '2007-05-02'

(eller for at få kun den ene post, og ikke alle på den dato, SELECT * FROM tabel WHERE dato = '2007-05-02 11:09:12')
Avatar billede stenger Nybegynder
30. juni 2008 - 15:03 #8
Se, den får jeg et hit på (flere faktisk, da der er sket en import fra Excel).

Men hvis jeg nu gerne vil se alle fra 2008-06-26, uafhængigt af tidspunktet på dagen, hvordan ville jeg så skulle skrive det?
Avatar billede stenger Nybegynder
01. juli 2008 - 18:02 #9
Lukker...fandt en anden måde.

Smider du et svar, Pidgeot? Det var et forsøg... og sikkert også helt korrekt, men bare mig, der er en skovl :)
Avatar billede pidgeot Nybegynder
01. juli 2008 - 18:07 #10
Værsgo...

Sorry jeg ikke så dit sidste indlæg - engang i mellem modtager jeg ikke alle mails fra Eksperten >_>;
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