我遇到查询问题。我需要在一系列日期时间之间获得所有记录。
我有以下内容:
select *
from db
where date between '2017-05-02 11:35:31.877' and '2017-05-02 17:06:24.727'
我尝试使用转换,使用强制转换,即使使用< =和> =,但没有任何改变。
我试过了:
select *
from db
where date between cast('2017-05-02 11:35:31.877' as datetime) and cast('2017-05-02 17:06:24.727' as datetime)
select *
from db
where date between convert(datetime,'2017-05-02 11:35:31.877') and convert(datetime,'2017-05-02 17:06:24.727')
select *
from db
where date >= '2017-05-02 11:35:31.877' and date <= '2017-05-02 17:06:24.727'
但输出绝对没有。我确定日期是日期时间类型
实际上,我确定表中有记录
答案 0 :(得分:1)
原始脚本没有任何问题。它将返回您想要的值,假设您的date
列是datetime
数据类型,并且您实际上存储了两个值之间的值。
您可以看到以下测试中的情况:
declare @db table([date] datetime)
insert into @db values('2017-05-02 11:35:31.877')
select *
from @db
where date >= '2017-05-02 11:35:31.877' and date <= '2017-05-02 17:06:24.727'
输出:
date
-----------------------
2017-05-02 11:35:31.877
您的列不是datetime
数据类型,或者您没有任何与过滤相匹配的数据。
答案 1 :(得分:0)
我通过将类型更改为datetime2而不是datetime来解决问题。不知道为什么。