选择日期时间范围之间的记录

时间:2017-05-03 14:57:32

标签: sql sql-server datetime select between

我遇到查询问题。我需要在一系列日期时间之间获得所有记录。

我有以下内容:

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'

但输出绝对没有。我确定日期是日期时间类型

实际上,我确定表中有记录

2 个答案:

答案 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来解决问题。不知道为什么。