Avatar billede Slettet bruger
30. december 2005 - 19:18 Der er 7 kommentarer og
1 løsning

Opdatere records i MySQL fra idag

Jeg skal opdatere en række records i en database, hvis datoen i datofeltet er den aktuelle dato eller før. Det skal fungere sådan at man kan indtaste nyheder og så de automatisk bliver offentliggjort når scriptet køres (det står øverst på den første side brugeren kommer til).

Sprog:
ASP + MySQL

SQL:
strSQL = "UPDATE nyheder SET aktiv = 1 WHERE DATEDIFF(CURDATE(),aktiv_dato) <= 0"

Felter:
aktiv = Angiver om nyheden er offentliggjort
aktiv_dato = angiver den dato som nyheden må offentliggøres i formatet ÅÅÅÅ-MM-DD


Fejl:
ADODB.Connection.1 (0x80004005)
SQLState: 4 Native Error Code: 1064 [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 '(CURDATE(),aktiv_dato) <= 0' at line 1


Der findes en del indlæg om det her på eksperten, men jeg har ikke kunne finde et der løser mit problem :(

Help me...
Avatar billede Slettet bruger
30. december 2005 - 19:19 #1
Jeg har i øvrigt også prøvet med DateDiff(d,CURDATE(), etc. og det giver samme fejl
Avatar billede pidgeot Nybegynder
30. december 2005 - 19:24 #2
Måske din MySQL er for gammel? DATEDIFF findes først fra og med MySQL 4.1.1, jf. http://dev.mysql.com/doc/refman/4.1/en/date-and-time-functions.html.
Avatar billede Slettet bruger
30. december 2005 - 19:30 #3
Det er SurfTown det ligger hos - nu kan jeg ikke finde hvilken version de har, men jeg går skam ud fra det er den nyeste...

Findes der en workaround eller en tilsvarende kode der gør det samme uden jeg skal løbe hele min tabel igennem og opdatere den. Det er jo knap så smart (performance-briller: ON)
Avatar billede pidgeot Nybegynder
30. december 2005 - 19:30 #4
I øvrigt kigger din kode på om aktiv_dato ligger efter eller er CURDATE() - som jeg forstår dig, bør det være omvendt.

Du kan desuden skrive den sådan her uden DATEDIFF:

UPDATE nyheder SET aktiv = 1 WHERE CURDATE()>=aktiv_dato

da MySQL fint kan finde ud af at sammenligne datoer.
Avatar billede pidgeot Nybegynder
30. december 2005 - 19:34 #5
Jf. Surftowns vidensbase (Database > Hvilken version understøttes af MySQL? 
) bruger de MySQL 4. Du kan evt. kontakte dem for at høre om en opgradering snart er på vej.
Avatar billede Slettet bruger
30. december 2005 - 19:35 #6
Kanon! Lige hvad jeg havde brug for..Takker ;)

Keep It Simple...han var ikke helt dum ham der fandt på det :P Sender du lgie et svar?
Avatar billede pidgeot Nybegynder
30. december 2005 - 19:37 #7
Det kan du tro ;)

Hvis du på et senere tidspunkt rent faktisk får brug for at finde forskellen mellem to datoer, kan du bruge DATE_ADD/DATE_SUB til at lave en workaround.
Avatar billede Slettet bruger
30. december 2005 - 19:54 #8
Gracias ;) Godt nytår...
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