标题可能有点棘手。 我有这张桌子:
| 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
那天的结果,所以基本上我想仅获得第二和第三字段。
如何仅选择日期时间格式的日期?
答案 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
条件使其比使用索引(如果有)的可能性更大。
我还认为这在描述您要实现的逻辑方面做得很好。