Notez que DATE_ADD()
fonction retourne une partie de temps en plus de la date.Ce n'est pas la même chose que l'utilisation date("Y-m-d", strtotime('+10 hours'))
de php, qui ne renvoie que la partie de date.
SELECT DATE_ADD(NOW(), INTERVAL 10 HOUR);
+-----------------------------------+
| DATE_ADD(NOW(), INTERVAL 10 HOUR) |
+-----------------------------------+
| 2010-11-05 01:59:51 |
+-----------------------------------+
1 row in set (0.00 sec)
Vous pouvez utiliser WHERE date = DATE(DATE_ADD(NOW(), INTERVAL 10 HOUR))
à la place:
SELECT DATE(DATE_ADD(NOW(), INTERVAL 10 HOUR));
+-----------------------------------------+
| DATE(DATE_ADD(NOW(), INTERVAL 10 HOUR)) |
+-----------------------------------------+
| 2010-11-05 |
+-----------------------------------------+
1 row in set (0.02 sec)
cas de test:
CREATE TABLE tbl (id int, date datetime);
INSERT INTO tbl VALUES (1, '2010-11-04');
INSERT INTO tbl VALUES (2, '2010-11-05');
INSERT INTO tbl VALUES (3, '2010-11-06');
INSERT INTO tbl VALUES (4, '2010-11-07');
SELECT * FROM tbl WHERE date = DATE(DATE_ADD(NOW(), INTERVAL 10 HOUR));
+------+---------------------+
| id | date |
+------+---------------------+
| 2 | 2010-11-05 00:00:00 |
+------+---------------------+
1 row in set (0.00 sec)
-vous obtenez une erreur SQL ou juste ne pas retourner la valeur que vous attendiez? – Gazillion