有人可以帮帮我吗?这不起作用(我没有结果):
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%'
但结肠混乱了。我在冒号之前和之后尝试了//和(),但它没有用。
答案 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%'也许从最后会更好,但我认为如果有一个额外的空间日期只是一个字符。