我试图获得两次之间的访问时间。
例子
accesstime starttime endtime
23:00 22:00 00:00:00
我的查询看起来像这样
select accesstime
from myTable
where accesstime between '22:00:00'and '00:00:00'
当我运行查询时,我没有得到任何结果
为什么?
我试图获得两次之间的访问时间。
例子
accesstime starttime endtime
23:00 22:00 00:00:00
我的查询看起来像这样
select accesstime
from myTable
where accesstime between '22:00:00'and '00:00:00'
当我运行查询时,我没有得到任何结果
为什么?
因为时间从00:00:00
到23:59:59
所以,22:00
比00:00:00
同一天大
编辑:这考虑为DateTime
. 如果他们是Varchar
,你有同样的问题,因为22:00
aVarchar
大于00:00:00
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'
我认为您可以将时间转换为日期时间,并通过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'))