2017-05-03 125 views
-1

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

我有以下几点:

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' 

但绝对没有。我敢肯定,日期为datetime型

其实,我敢肯定有记录在表中

+0

https://www.w3schools.com/sql/func_convert.asp – etsa

+0

或发布您尝试过的内容,示例数据,输出和预期输出 – etsa

+2

您能解释一下这个问题吗?你得到不正确的行吗?不够还是太多? “日期”列的数据类型是什么? –

回答

0

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

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数据类型,或者您没有任何与您的过滤相匹配的数据。