在 2 个不同列中的小时之间制作 SELECT

Make SELECT of an hour between to hours that are in 2 different columns

我有以下table。我想只对 11:35 小时在 starthour 和 endhour 之间的行进行 SELECT。

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);

我只使用大于和小于,像这样:

SELECT id, name, starthour, endhour 
FROM user 
WHERE starthour < 11:35:00 AND endhour > 11:35:00;

...而且,是的,您可能是想使用 TIME 数据对象?您可以类似地比较 DATE,但只需调整数据格式即可。

实际上,我不确定您的 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));

试试这个,我认为它应该有效。

您似乎在尝试对日期列进行时间查询。假设开始和结束时间是实际的日期时间列,这应该可以解决问题。

SELECT id, name, starthour, endhour 
FROM user WHERE TIME(starthour) <= '11:35:00' 
AND TIME(endhour) <= '11:35:00'

它应该提供 '11:35:00' 的记录,而不考虑日期。 如果您不使用日期时间,那么 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'

应该可以。