0

我试图获得两次之间的访问时间。

例子

accesstime    starttime   endtime
23:00         22:00       00:00:00

我的查询看起来像这样

select accesstime 
from myTable 
where accesstime  between '22:00:00'and '00:00:00'

当我运行查询时,我没有得到任何结果

为什么?

4

3 回答 3

1

因为时间从00:00:0023:59:59

所以,22:0000:00:00同一天大

编辑:这考虑为DateTime. 如果他们是Varchar,你有同样的问题,因为22:00aVarchar大于00:00:00

于 2012-06-10T05:08:58.720 回答
1

BETWEEN的相关资料:

如果test_expression的值大于或等于 begin_expression 的值小于或等于end_expression的值,则BETWEEN 返回 TRUE 。

在您的表中,访问时间“23:00”(测试表达式)大于“22:00:00”(开始表达式)但小于“00:00:00”(结束表达式),因此它返回 false。

为了查看结果,请将您的查询更改为:

select accesstime from myTable 
where accesstime  between '00:00:00' and '23:00:01'
于 2012-06-10T05:24:22.123 回答
0

我认为您可以时间转换为日期时间,并通过dateadd函数将一天添加到时间“00:00:00”,然后它就可以正常工作。

示例代码在这里:

CREATE table EX_Time (accesstime nvarchar(100),starttime nvarchar(100),endtime nvarchar(100)) 

INSERT INTO EX_Time(accesstime,starttime,endtime)
VALUES (N'23:00:00',N'22:00:00',N'00:00:00')

select * 
FROM Ex_Time
Where convert(datetime,accesstime) BETWEEN convert(datetime,'22:00:00')
AND dateadd(day,1,convert(datetime,'00:00:00'))
于 2012-06-10T06:00:14.723 回答