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 来解决问题。不知道为什么。
我在查询时遇到问题。我需要获取一系列日期时间之间的所有记录。
我有以下内容:
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 来解决问题。不知道为什么。