1

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

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

我究竟做错了什么?

4

5 回答 5

9

较小的日期必须是第一个

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

代替

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

使用 between 时也要小心,因为您将从较大的日期获得午夜值,而没有别的

看看SQL Server 中的日期之间是如何工作的?

于 2009-06-17T13:17:41.947 回答
1

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

于 2009-06-17T13:18:41.350 回答
1

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

h.OrderDate between '2009-06-01' and '2009-06-16'
于 2009-06-17T13:19:06.653 回答
0
select 
    * 
from
    OrderH h
where
        h.OrderDate between '2009-06-01' and '2009-06-16'
order by
    h.OrderDate desc
于 2009-06-17T13:18:19.450 回答
0

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

于 2009-06-17T13:21:16.947 回答