如何在没有秒的情况下从db检索日期

时间:2017-07-24 07:37:29

标签: mysql sql

+---------+---------------------+
| 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';

我正在尝试这个......但是没有工作。

3 个答案:

答案 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,您可以使用DATESTR_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'