+---------+---------------------+
| user_id | registration_date |
+---------+---------------------+
| 6988 | 2017-07-24 12:10:29 |
| 6985 | 2017-07-23 12:10:00 |
| 6980 | 2017-07-22 11:10:40 |
| 6979 | 2017-07-21 02:30:00 |
| 6978 | 2017-07-20 08:10:15 |
| 6977 | 2017-07-19 12:10:29 |
| 6976 | 2017-07-18 12:10:00 |
| 6975 | 2017-07-17 05:10:02 |
| 6974 | 2017-07-16 06:10:11 |
| 6951 | 2017-07-15 09:10:50 |
+---------+---------------------+
select registration_date from users WHERE registration_date BETWEEN '2017-07-24 12:10' - INTERVAL 10 DAY AND '2017-07-24 12:10';
我在我的sql表中有这些数据,我想在2017-07-24 12:10和INTERVAL 10 DAY和'2017-07-24 12:10'之间获取数据(不包括秒数)。< / p>
现在我想得到这个| 6988 | 2017-07-24 12:10:29 | ...意味着我想忽略存储在数据库中的数据的秒值,然后获取数据。所以带有user_id 6988的数据将会到来。
select registration_date from users WHERE registration_date BETWEEN '2017-07-24 12:10' - INTERVAL 10 DAY AND '2017-07-24 12:10';
我正在尝试这个......但是没有工作。
答案 0 :(得分:0)
添加秒的最小值和最大值。在开始时添加00
和范围结束59
作为秒
select registration_date from users
WHERE registration_date BETWEEN '2017-07-24 12:10:00' - INTERVAL 10 DAY
AND '2017-07-24 12:10:59';
答案 1 :(得分:0)
对于MySQL,您可以使用DATE
和STR_TO_DATE
函数来提取/比较日期,例如:
SELECT DATE_FORMAT(registration_date, '%Y-%m-%d %H:%i')
FROM users
WHERE registration_date BETWEEN DATE_ADD(STR_TO_DATE('2017-07-24 12:10', '%Y-%m-%d %H:%i') - INTERVAL 10 DAY)
AND STR_TO_DATE('2017-07-24 12:10', '%Y-%m-%d %H:%i');
Here's文档。
答案 2 :(得分:0)
您可以使用DATE_FORMAT
获取所需日期的各个部分,然后对此进行比较。
由于您需要一系列日期,因此您需要与时间分开进行测试。
WHERE DATE(registration_date) BETWEEN '2017-07-14' AND '2017-07-24'
AND DATE_FORMAT(registration_date, '%H:%i') = '12:10'