sql >> Databasteknik >  >> RDS >> Mysql

PHP Välj från MySQL där datumfältet är 7 dagar framåt i tiden

Du har förmodligen definierat expiry_date som ett datum och tid, vilket betyder att dina jämförelser är felaktiga. t.ex. du måste använda

SELECT ... WHERE date(expiry_date) = date(now() + interval 7 day)

istället (notera inslagning av +7-dagen i en date() operation.

t.ex.

Givet en tabell med ett datum och ett datetime-fält:

+------------+---------------------+
| d          | dt                  |
+------------+---------------------+
| 2013-06-28 | 2013-06-28 08:23:03 |
+------------+---------------------+

Lägg märke till hur jämförelsen blir:

mysql> select d=now(), d=date(now()), dt=now(), dt=date(now()), now() from x;
+---------+---------------+----------+----------------+---------------------+
| d=now() | d=date(now()) | dt=now() | dt=date(now()) | now()               |
+---------+---------------+----------+----------------+---------------------+
|       0 |             1 |        0 |              0 | 2013-06-28 08:26:20 |
+---------+---------------+----------+----------------+---------------------+
1 row in set (0.00 sec)

datum v.s. datetime =false
date v.s date =true
datetime v.s. datetime =false (hh:mm:ss matchar inte, så inte lika)
datetime v.s. datum =falskt (datum utökas till åååå-mm-hh 00:00:00 och hh:mm:ss matchar inte



  1. MySQL med Sum och Case

  2. Hur man konverterar en sträng till versaler i SQL

  3. Indexerar mysql 5.0 nollvärden?

  4. Vad är det bästa sättet i MySQL att få hur många timmar gammalt något är?