我试图从数据库中获取最近14天的记录以及仅仅将来的14天。过去我可以得到,但未来是一个问题。mysql的结果按日期将来和过去
这里是我工作的服务器上精细什么约会的格式我想(8天的样品)的样品:
mysql> select DATE_SUB(CURDATE(),INTERVAL +8 DAY);
+-------------------------------------+
| DATE_SUB(CURDATE(),INTERVAL +8 DAY) |
+-------------------------------------+
| 2017-09-07 |
+-------------------------------------+
1 row in set (0.00 sec)
mysql> select DATE_SUB(CURDATE(),INTERVAL -8 DAY);
+-------------------------------------+
| DATE_SUB(CURDATE(),INTERVAL -8 DAY) |
+-------------------------------------+
| 2017-09-23 |
+-------------------------------------+
1 row in set (0.00 sec)
这似乎很好地工作,让过去和将来的日期,但是,当试图它与我的实际查询内联,它不想为未来的约会工作。
mysql> SELECT estatu,edates,etimes
FROM tevent
WHERE edates
BETWEEN DATE_SUB(CURDATE(),INTERVAL +8 DAY) AND CURDATE();
+----------+------------+--------+
| estatu | edates | etimes |
+----------+------------+--------+
| Upcoming | 2017-09-15 | 19:00 |
| Upcoming | 2017-09-15 | 17:00 |
| Results | 2017-09-09 | 15:00 |
| Upcoming | 2017-09-15 | |
| Results | 2017-09-08 | |
| Results | 2017-09-08 | 19:00 |
| Results | 2017-09-08 | 19:30 |
| Results | 2017-09-08 | 19:30 |
| Results | 2017-09-09 | 09:30 |
| Results | 2017-09-09 | 12:00 |
| Results | 2017-09-09 | 15:00 |
| Results | 2017-09-09 | 17:00 |
| Results | 2017-09-09 | 18:00 |
| Results | 2017-09-09 | 19:30 |
| Results | 2017-09-09 | 20:30 |
| Upcoming | 2017-09-15 | |
+----------+------------+--------+
16 rows in set (0.00 sec)
mysql> SELECT estatu,edates,etimes
FROM tevent
WHERE edates
BETWEEN DATE_SUB(CURDATE(),INTERVAL -8 DAY) AND CURDATE();
Empty set (0.00 sec)
这是我到目前为止尝试的各种脚本,在这里和其他地方在网上找到。
这个查询只是为了确认我的未来事件:
mysql> SELECT estatu,edates,etimes
FROM tevent
WHERE edates
LIMIT 10;
+----------+------------+--------+
| estatu | edates | etimes |
+----------+------------+--------+
| Upcoming | 2017-09-15 | 19:00 |
| Upcoming | 2017-09-15 | 17:00 |
| Upcoming | 2017-09-16 | 17:00 |
| Upcoming | 2017-09-23 | 15:00 |
| Upcoming | 2017-09-23 | 17:00 |
| Results | 2017-09-09 | 15:00 |
| Upcoming | 2017-09-15 | |
| Results | 2017-03-26 | |
| Results | 2017-04-02 | |
| Results | 2017-04-09 | |
+----------+------------+--------+
10 rows in set (0.00 sec)
编辑:我需要两个独立的结果,一个是未来事件,一个是过去的事件。每个请求将独立于单独的PHP页面连接。
=========
SOLUTION:
由于@etsa发现是格式问题。下面的两个查询提供什么是必需的,再次与8天的样品:
SELECT estatu,edates,etimes FROM tevent WHERE edates BETWEEN DATE_SUB(CURDATE(),INTERVAL +8 DAY) AND CURDATE();
SELECT estatu,edates,etimes FROM tevent WHERE edates BETWEEN CURDATE() AND DATE_SUB(CURDATE(),INTERVAL -8 DAY);
结果是这样的:
mysql> SELECT estatu,edates,etimes FROM tevent WHERE edates BETWEEN DATE_SUB(CURDATE(),INTERVAL +8 DAY) AND CURDATE();
+----------+------------+--------+
| estatu | edates | etimes |
+----------+------------+--------+
| Upcoming | 2017-09-15 | 19:00 |
| Upcoming | 2017-09-15 | 17:00 |
| Results | 2017-09-09 | 15:00 |
| Upcoming | 2017-09-15 | |
| Results | 2017-09-08 | |
| Results | 2017-09-08 | 19:00 |
| Results | 2017-09-08 | 19:30 |
| Results | 2017-09-08 | 19:30 |
| Results | 2017-09-09 | 09:30 |
| Results | 2017-09-09 | 12:00 |
| Results | 2017-09-09 | 15:00 |
| Results | 2017-09-09 | 17:00 |
| Results | 2017-09-09 | 18:00 |
| Results | 2017-09-09 | 19:30 |
| Results | 2017-09-09 | 20:30 |
| Upcoming | 2017-09-15 | |
+----------+------------+--------+
16 rows in set (0.00 sec)
mysql> SELECT estatu,edates,etimes FROM tevent WHERE edates BETWEEN CURDATE() AND DATE_SUB(CURDATE(),INTERVAL -8 DAY);
+----------+------------+--------+
| estatu | edates | etimes |
+----------+------------+--------+
| Upcoming | 2017-09-15 | 19:00 |
| Upcoming | 2017-09-15 | 17:00 |
| Upcoming | 2017-09-16 | 17:00 |
| Upcoming | 2017-09-23 | 15:00 |
| Upcoming | 2017-09-23 | 17:00 |
| Upcoming | 2017-09-15 | |
| Upcoming | 2017-09-15 | |
| Upcoming | 2017-09-16 | 19:30 |
| Upcoming | 2017-09-16 | 09:30 |
| Upcoming | 2017-09-16 | 19:30 |
| Upcoming | 2017-09-16 | 14:00 |
| Upcoming | 2017-09-16 | 15:00 |
| Upcoming | 2017-09-16 | 19:30 |
| Upcoming | 2017-09-17 | |
| Upcoming | 2017-09-17 | |
+----------+------------+--------+
15 rows in set (0.00 sec)
非常感谢@ sloan-thrasher,但是我发现当只使用“WHERE edates DATE_ADD(CURDATE(),INTERVAL +8 DAY);”请隔离它仍然不提供结果 – JanBal
如果这是您使用的确切子句,则不应产生任何结果。使用''edates <= DATE_ADD''' ...而不是 –