选择所有字段(日期时间),其中小时大于某个小时,并且日期仅是当前日期

时间:2018-08-19 09:20:05

标签: mysql sql select

标题可能有点棘手。 我有这张桌子:

| id_ordineX | data_start          |
+------------+---------------------+
| ordine1    | 2018-08-06 08:00:00 |
| ordine1    | 2018-08-06 10:45:00 |
| ordine2    | 2018-08-06 16:20:00 |
| ordine2    | 2018-08-07 09:20:00 |

我想选择data_start > 2018-08-06 09:00:00的所有字段,这样我就得到了最后3个字段的所有结果,但是我只想选择2018-08-06那天的结果,所以基本上我想仅获得第二和第三字段。 如何仅选择日期时间格式的日期?

3 个答案:

答案 0 :(得分:2)

您可以使用日期和小时

select * 
from my_table 
where date(date_start) = curdate() 
      and hour(date_start) > 9 

答案 1 :(得分:2)

可以使用简单的日期时间函数:

SELECT *
FROM `table`
WHERE `data_start` > '2018-08-06 09:00:00' AND DATE(`data_start`) = '2018-08-06';

或者您可以指定一个范围:

SELECT *
FROM `table`
WHERE `data_start` BETWEEN '2018-08-06 09:00:00' AND '2018-08-06 23:59:59';

答案 2 :(得分:1)

我建议将查询编写为:

SELECT t.*
FROM `table` t
WHERE `data_start` > '2018-08-06 09:00:00' AND  
      `data_start` < '2018-08-07';

通过避免在data_start上使用函数,WHERE条件使其比使用索引(如果有)的可能性更大。

我还认为这在描述您要实现的逻辑方面做得很好。