2010-05-11 17 views
47

In meiner Tabelle habe ich ein Feld mit dem Namen eventdate in datetime Format wie 2010-05-11 00:00:00.MySQL: Wie ein Tag zu Datetime-Feld in Abfrage hinzufügen

Wie mache ich eine Abfrage, so dass es 1 Tag fügt zum eventdate zB wenn heute 2010-05-11 ist, mag ich in where Klausel zeige alle Datensätze mit morgigem Datum zurückzukehren.

Update:

Ich versuchte dies:

select * from fab_scheduler where custid = 1334666058 and DATE_ADD(eventdate, INTERVAL 1 DAY)

Aber leider gibt es den gleichen Datensatz, auch wenn ich ein Intervall größer als 1

Ergebnis hinzufügen:

2010-05-12 00:00:00

Aber ich möchte nur Datensätze mit dem Datum von morgen auswählen.

Antwort

91

können Sie verwenden, um die DATE_ADD() Funktion:

... WHERE DATE(DATE_ADD(eventdate, INTERVAL -1 DAY)) = CURRENT_DATE 

Es kann auch in der SELECT Anweisung verwendet werden:

SELECT DATE_ADD('2010-05-11', INTERVAL 1 DAY) AS Tomorrow; 
+------------+ 
| Tomorrow | 
+------------+ 
| 2010-05-12 | 
+------------+ 
1 row in set (0.00 sec) 
+0

siehe mein Update ... –

+1

@phpBOY: Ich glaube, du hast den '= CURRENT_DATE' Teil verpasst. –

+0

Ich habe dieses 'select * von fab_scheduler versucht, wo custid = 1334666058 und DATE (DATE_ADD (eventdate, INTERVALL 1 DAY)) = CURRENT_DATE ' aber jetzt gibt es leere Ergebnismenge zurück :( –

-3
$date = strtotime(date("Y-m-d", strtotime($date)) . " +1 day"); 

Oder simplier:

date("Y-m-d H:i:s", time()+((60*60)*24)); 
+0

Sie nicht auf die Sommerzeit zählte. mktime wäre besser. – Vili

4

Haben Sie gehen mit diesem, wie das ist, wie ich es tun würde :)

SELECT * 
FROM fab_scheduler 
WHERE custid = '123456' 
AND CURDATE() = DATE(DATE_ADD(eventdate, INTERVAL 1 DAY)) 
+1

Ich glaube nicht, dass das funktionieren kann. 'eventdate' wird niemals gleich 'eventdate + 1 day' sein. Ich denke du wolltest 'CURDATE()' da drin benutzen. –

+0

Oh ja, also tat ich –

0

möglich It`s MySQL spezifische Syntax Zucker zu verwenden:

SELECT ... date_field + INTERVAL 1 DAY 

Sieht aus viel hübscher anstelle der Funktion DATE_ADD

0

Wie wäre es damit:  

select * from fab_scheduler where custid = 1334666058 and eventdate = eventdate + INTERVAL 1 DAY 
1

Wenn Sie sind in der Lage NOW() zu verwenden, würde dies einfachste Form sein:

SELECT * FROM `fab_scheduler` WHERE eventdate>=(NOW() - INTERVAL 1 DAY)) AND eventdate<NOW() ORDER BY eventdate DESC; 

Mit MySQL 5.6+ Abfrage sollte abowe tun.Abhängig vom sql-Server müssen Sie möglicherweise CURRDATE() anstelle von NOW() verwenden. Dies ist ein Alias ​​für DATE(NOW()) und gibt nur den Datumsteil datetime zurück.

0

Sie können dies versuchen:

SELECT DATE(DATE_ADD(m_inv_reqdate, INTERVAL + 1 DAY)) FROM tr08_investment