/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
MySQL - slette post efter dato?
Fra : Bjarne Jensen


Dato : 21-05-09 18:12

I en tabel har hver post et datofelt i formatet YYYY-MM-DD.

Jeg vil gerne have slettet alle posts som er ældre end idag minus 2 dage
men det problem synes ikke at være beskrevet i MySQL manualen.

Det kan da ikke være rigtigt?

/Bjarne

 
 
Leif Neland (21-05-2009)
Kommentar
Fra : Leif Neland


Dato : 21-05-09 18:41

Bjarne Jensen skrev:
> I en tabel har hver post et datofelt i formatet YYYY-MM-DD.
>
> Jeg vil gerne have slettet alle posts som er ældre end idag minus 2 dage
> men det problem synes ikke at være beskrevet i MySQL manualen.
>
> Det kan da ikke være rigtigt?

Nej det er ikke rigtigt.

delete from posts where datediff( now( ) , postdato ) >2

Leif

PS: Hvis du læser manualen,

http://dev.mysql.com/doc/refman/5.4/en/date-and-time-functions.html

så er afsnittet under timestampdiff

"Note

The order of the date or datetime arguments for this function is the
opposite of that used with the TIMESTAMP() function when invoked with 2
arguments."

tilføjet på min foranledning

Bjarne Jensen (23-05-2009)
Kommentar
Fra : Bjarne Jensen


Dato : 23-05-09 00:35

Leif Neland skrev:

> delete from posts where datediff( now( ) , postdato ) >2

Det funker. Det går måske lidt hurtigt en gang imellen når man kikker i
manualen men det er vel heller ikke særligt åbenlyst at noget så simpelt
som "mindre end" skal beregnes som en "...diff".
Men tak under alle omstændigheder.

/Bjarne

Arne Vajhøj (22-05-2009)
Kommentar
Fra : Arne Vajhøj


Dato : 22-05-09 01:45

Bjarne Jensen wrote:
> I en tabel har hver post et datofelt i formatet YYYY-MM-DD.
>
> Jeg vil gerne have slettet alle posts som er ældre end idag minus 2 dage
> men det problem synes ikke at være beskrevet i MySQL manualen.
>
> Det kan da ikke være rigtigt?

DELETE FROM tabel WHERE felt < DATE_SUB(felt, INTERVAL 2 DAY)

eller

DELETE FROM tabel WHERE felt < ?

hvor applikationen så sætter den parameter.

Arne

Bjarne Jensen (23-05-2009)
Kommentar
Fra : Bjarne Jensen


Dato : 23-05-09 00:44

Arne Vajhøj skrev:

> DELETE FROM tabel WHERE felt < DATE_SUB(felt, INTERVAL 2 DAY)

Den ku' jeg ikke lige få til at funke... mangler der ikke en værdi i
parantesen?

Tak for indsatsen under alle omstændigheder.


/Bjarne

Arne Vajhøj (23-05-2009)
Kommentar
Fra : Arne Vajhøj


Dato : 23-05-09 01:43

Bjarne Jensen wrote:
> Arne Vajhøj skrev:
>> DELETE FROM tabel WHERE felt < DATE_SUB(felt, INTERVAL 2 DAY)
>
> Den ku' jeg ikke lige få til at funke... mangler der ikke en værdi i
> parantesen?

Det tror jeg ikke.

mysql> SELECT @@VERSION;
+----------------+
| @@VERSION |
+----------------+
| 4.1.10a-nt-max |
+----------------+
1 row in set (0.00 sec)

mysql> SELECT DATE_SUB(NOW(), INTERVAL 2 DAY);
+---------------------------------+
| DATE_SUB(NOW(), INTERVAL 2 DAY) |
+---------------------------------+
| 2009-05-20 20:43:02 |
+---------------------------------+
1 row in set (0.00 sec)

Arne

Bjarne Jensen (23-05-2009)
Kommentar
Fra : Bjarne Jensen


Dato : 23-05-09 08:50

Undskyld Arne, jeg ved ikke hvad jeg lavede da jeg testede dit forslag
men her til morgen funker det fint!

Tak / Bjarne

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408914
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste