Avatar billede loopstudio Nybegynder
14. december 2007 - 03:29 Der er 7 kommentarer og
1 løsning

Problem med dato-sammenligning dansk/engelsk format ASP/MySQL.

Når jeg i .ASP kører denne SQL på en tabel der har et timestamp-telt:

query_str = "SELECT * FROM tabel WHERE date(timestamp)=" & Date() & ";"

så burde den finde poster hvor timestamp-feltet indeholder en tidsstempling hvor datoen matcher datoen i dag (dags dato).
Men problemet er at ASP Date()-kommandoen returnerer "14-12-2007", mens MYSQL Date() returnerer "2007-12-14"!

For mig at se er det MySql der er gal på den eftersom vi lever i Danmark og at serveren er sat op til dansk locale!

Jeg har prøvet med forskellige formateringer, men uden held so far.
Har også prøvet at ændre variablen date_format i MySql Front til %d-%m-%Y, men den ændrer hele tiden tilbage til %Y-%m-%d!!

Er der nogen der kan forklare dette? Og/eller har et løsningsforslag?
Avatar billede goose Nybegynder
14. december 2007 - 08:28 #1
Prøv først at lave datoen om til MYsql format:

MYsqldato = year(date()) &"-"& right("0"&month(date()),2) &"-"& right("0"&day(date()),2)

og så:

query_str = "SELECT * FROM tabel WHERE date='" & Mysqldato & "';"

/Goose
Avatar billede loopstudio Nybegynder
14. december 2007 - 13:36 #2
ja, det var også min "sidste" udvej, men der findes altså ikke en måde så MYSQL kan vise/returnere rigtigt format???

Jeg har altid fået at vide at MySql var sådan en avanceret database, men synes efterhånden at der er ALT for meget bøvl med at anvende mysql ifht. alle andre databaser.
Avatar billede goose Nybegynder
14. december 2007 - 14:01 #3
Nej, ikke mig bekendt. Såvidt jeg ved, så er det sådan datoformatet ser ud i MYsql og længere er den vist ikke :o)

/Goose
Avatar billede loopstudio Nybegynder
14. december 2007 - 15:35 #4
Nå, men ja jeg prøvede det du skrev, men det var heller ikke nok. Det viste sig at det skal også konverteres til en streng INDEN sammenligningen! Det er altså ikke nok at det er en dato, konverteret til en dato etc.

Men jeg kan undre mig MEGET over 2 ting..
1) Hvorfor har mySql så en "VARIABEL" kaldet "dato_format" som man ovenikøbet ser ud til at man kan/ændrer, men tager bare ingen effekt, for når man går ind i dialogboksen igen, så har den ændret det tilbage.
Når noget ikke kan ændres, så hedder det en KONSTANT! Og så skal man IKKE give mulighed for at det kan ændres.. hmm mystisk..
2) Kan også undres over at MySql er blevet så populært som det er, for det er virkelig primitivt i mange henseender i sammenligning med stort set alle andre databaser som MS Access, Paradox, MS Sql, Progress osv osv.
Men det MÅ jo ganske enkelt være... PRISEN! *smiler*

Jeg gir dig point! :)
Avatar billede loopstudio Nybegynder
14. december 2007 - 15:37 #5
hov ser lige at DU også havde konverteret til en streng, så din løsning ville selvfølgelig virke! :)
Avatar billede loopstudio Nybegynder
15. december 2007 - 04:05 #6
Hmm... jeg kan faktisk STADIG ikke få det til at virke i nogle tilfælde!!

Det er som om at der er forskel - nogle gange virker det, andre gange ikke.

Tag dette simple eksempel:

SELECT * FROM Tabel WHERE date(Tabel.TimeStamp) = date(now())

Selv om der er poster med timestamp for i dag, så kan den ikke finde dem!

Hvis jeg derimod kører en year() eller day() på begge to isf. en date(), så virker det fint!

Nogle der kan granske den?
Avatar billede loopstudio Nybegynder
15. december 2007 - 04:06 #7
PS: virker heller ikke hvis jeg skriver '2007-12-15' isf. "date(now())"
Avatar billede loopstudio Nybegynder
15. december 2007 - 04:13 #8
SHIT!!

Flg VIRKER:

SELECT * FROM Tabel WHERE year(Tabel.TimeStamp) = year('2007-12-15') AND month(Tabel.TimeStamp) = month('2007-12-15') AND day(Tabel.TimeStamp) = day('2007-12-15')

Men flg virker IKKE:

SELECT * FROM logfil WHERE date(logfil.TimeStamp) = '2007-12-15'

OM jeg begriber det!

Jeg har endda prøvet at køre en reparer på tabellen!
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



IT-JOB