2009-06-17 133 views
1

我有一個名爲「OrderH」的訂單表頭。在這個表中有一個名爲「OrderDate」的列。我正在嘗試檢索具有特定範圍內的日期的訂單。我認爲我可以用「之間」關鍵字來實現這一點,但我沒有任何運氣。這是我一直在爭論的SQL:SQL - 按日期範圍查詢

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

我在做什麼錯?

+0

您是否正在使用MSSQL或MySQL – 2009-06-17 13:17:15

+0

請添加更多關於哪個DBMS的信息,相關表格的描述,錯誤信息(如有)等。 – 2009-06-17 13:17:53

回答

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?

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

查詢不起作用,因爲在您的示例中,第一個日期大於第二個日期。交換日期。首先必須小於等於第二日期。

1

很難找到結束之前結束的日期。更改最小和最大...

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

在2009-06-16午夜之後發生的MS-SQL Server事件將不包括在內。