我有下表。我想只选择11:35小时在starthour和endhour之间的行。
TABLE NAME USER
id, name, starthour(DATE), endhour(DATE)
1, "mariano", 10:35:00, 13:00:00
2, "patrick", 17:35:00, 19:00:00
3, "gloria", 21:22:00, 22:00:00
4, "david", 22:29:00, 23:33:00
如果尝试执行以下SELECT。
SELECT id, name, starthour, endhour FROM user WHERE (11:59 BETWEEN starthour AND endhour);
答案 0 :(得分:2)
我只是使用大于和小于,像这样:
SELECT id, name, starthour, endhour
FROM user
WHERE starthour < 11:35:00 AND endhour > 11:35:00;
...而且,是的,您可能意味着使用TIME数据对象?您可以类似地比较DATE,但只需调整数据格式。
答案 1 :(得分:1)
实际上,我不确定你的starthour和endhour字段,它们是DATE类型。你不想使用TIME吗?
如果不是,可能重复日期:SQL query to select dates between two dates
你应该使用TIME(starthour)或EXTRACT()函数http://www.w3schools.com/sql/func_extract.asp,所以结果将是你使用TIME()函数从传递的表达式中提取时间:
SELECT id, name, starthour, endhour FROM user WHERE (TIME('11:59:00') BETWEEN TIME(starthour) AND TIME(endhour));
试试这个,我认为它应该有用。
答案 2 :(得分:1)
您似乎正在尝试对日期列进行时间查询。假设开始和结束时间是实际的日期时间列,这应该可以解决问题。
SELECT id, name, starthour, endhour
FROM user WHERE TIME(starthour) <= '11:35:00'
AND TIME(endhour) <= '11:35:00'
它应提供&#39; 11:35:00&#39;不管那一天。
如果您未使用日期时间,则starthour(DATE), endhour(DATE)
应为starthour(TIME), endhour(TIME)
且查询
SELECT id, name, starthour, endhour
FROM user WHERE starthour <= '11:35:00'
AND endhour <= '11:35:00'
应该工作。