SELECT时间段,SQL

时间:2018-02-10 20:05:55

标签: sql phpmyadmin

有人可以帮帮我吗?这不起作用(我没有结果):

SELECT * FROM push WHERE Sent >= '08.00' AND Sent < '10:00'

Sent包含&#34; 2017年12月5日上午09:45 CET&#34;我希望选择时间在08:00到10:00之间的所有内容。

我也尝试过这样的事情(我没有结果):

SELECT * FROM push WHERE Sent LIKE '%09:00%'

但结肠混乱了。我在冒号之前和之后尝试了//和(),但它没有用。

4 个答案:

答案 0 :(得分:0)

sent存储为日期/时间值。如果是这样,你可以这样做:

where hour(sent) in (8, 9)

或类似的东西:

where time(sent) >= '08:00:00' and time(sent) < '10:00:00'

请注意,函数hour()time()因数据库而异,但大多数都以某种方式支持此功能。

如果您将其存储为字符串,那么我的建议是修复数据并执行上述操作之一。如果您出于某种原因对此有抵抗力,可以使用like

where sent like '% 08:%' or sent like '% 09:%'

但实际上,您应该使用正确的类型存储数据,因此这甚至可能是错误的建议。

答案 1 :(得分:0)

使用HOUR功能

SELECT * FROM push WHERE HOUR(sent) > 8 AND HOUR(sent) < 10;

答案 2 :(得分:0)

between! 如果sent是日期时间:

SELECT * FROM push WHERE HOUR(sent) BETWEEN 8 AND 9;

如果sent是varchar:

SELECT * FROM push WHERE SUBSTRING(sent,-12,5) BETWEEN '08:00' AND '09:59';

答案 3 :(得分:0)

谢谢大家的帮助。我解决了它(以一种不太漂亮的方式):SELECT * FROM push WHERE Sent LIKE'______________ 8%'也许从最后会更好,但我认为如果有一个额外的空间日期只是一个字符。