SQL - 按日期范围查询

SQL - 按日期范围查询

问题描述:

我有一个名为“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

较小的日期必须是第一

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?

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

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

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

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

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