Select 在日期时间范围内记录

Select record between range of datetime

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

我有以下内容:

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'

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

实际上,我确定 table

中有记录

你的原剧本没有问题。它将 return 您想要的值,假设您的 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 数据类型,或者您没有任何数据符合您的过滤条件。

我通过将类型更改为 datetime2 而不是 datetime 来解决问题。不知道为什么。