在不检索任何数据的日期之间选择查询

时间:2017-01-24 23:51:25

标签: sql sql-server tsql

我一直在尝试检索两个日期之间注册的行(因为每次有人通过门时都会插入一行)。通过这种方式,我们可以获得大量的访问者"按月计 查询以下内容时:

select MOV_DATAHORA from LOG_CREDENCIAL
WHERE MOV_DATAHORA>'2017-01-01'`

共显示5851行。这是一行的例子:

2017-01-05 21:33:30.000

但是在尝试以下操作时:

select MOV_DATAHORA from LOG_CREDENCIAL
WHERE MOV_DATAHORA>'2017-01-01' 
  AND MOV_DATAHORA<'2017-01-02'

显示0行。我甚至尝试了count(MOV_DATAHORA)声明,但它仍然无法正常工作。我也尝试使用BETWEEN语句失败了。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

嗯......基于您的查询谓词的最简单的解释:

WHERE MOV_DATAHORA > '2017-01-01' 
AND MOV_DATAHORA < '2017-01-02'

是1月1日(新年之后)没有访客。

答案 1 :(得分:0)

您正在比较DateTime和Date数据类型。你的表有一个DateTime,因为你可以在日期之后看到21:33:30.000,转换和比较类似的类型执行以下操作。

SELECT MOV_DATAHORA FROM LOG_CREDENCIAL WHERE DATE(MOV_DATAHORA)>'2017-01-01' 
AND DATE(MOV_DATAHORA)<'2017-01-02'

或在

之间使用
SELECT MOV_DATAHORA FROM LOG_CREDENCIAL WHERE DATE(MOV_DATAHORA) BETWEEN '2017-01-01'
AND '2017-01-02'