选择两个不同列中的一小时到一小时

时间:2015-02-10 19:02:48

标签: mysql between

我有下表。我想只选择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);

3 个答案:

答案 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'

应该工作。