SQL - 按日期范围查询

时间:2009-06-17 13:14:35

标签: tsql syntax between

我有一个名为“OrderH”的订单表头。在此表中有一个名为“OrderDate”的列。我正在尝试检索日期在一定范围内的订单。我认为我可以使用“between”关键字完成此操作,但我没有任何运气。这是我一直在讨论的SQL:

select 
    * 
from
    OrderH h
where
        h.OrderDate between '2009-06-16' and '2009-06-01'
order by
    h.OrderDate desc

我做错了什么?

5 个答案:

答案 0 :(得分:8)

较小的日期必须是第一个

between  '2009-06-01' and '2009-06-16'

而不是

between '2009-06-16' and '2009-06-01'

使用中间时也要小心,因为你会从更大的日期获得午夜值而没有别的

查看How Does Between Work With Dates In SQL Server?

答案 1 :(得分:1)

查询不起作用,因为在您的示例中,第一个日期大于第二个日期。交换日期。首先必须小于等于第二个日期。

答案 2 :(得分:1)

很难找到在开始之前结束的日期。更改最小和最大......

h.OrderDate between '2009-06-01' and '2009-06-16'

答案 3 :(得分:0)

select 
    * 
from
    OrderH h
where
        h.OrderDate between '2009-06-01' and '2009-06-16'
order by
    h.OrderDate desc

答案 4 :(得分:0)

在2009-06-16午夜之后发生的MS-SQL Server事件将不包括在内。