Tsql SQL-按日期范围查询

Tsql SQL-按日期范围查询,tsql,syntax,between,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 我做错了什么?较小的日

我有一个名为“OrderH”的订单标题表。此表中有一列名为“OrderDate”。我试图检索日期在一定范围内的订单。我原以为我可以用“between”关键字来完成这项任务,但我一点运气都没有。这就是我一直在玩弄的SQL:

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

我做错了什么?

较小的日期必须是第一个

between  '2009-06-01' and '2009-06-16'
而不是

between '2009-06-16' and '2009-06-01'
使用between时也要小心,因为您将从较大的日期中获取午夜值,而不获取其他值


看看

较小的日期必须是第一个

between  '2009-06-01' and '2009-06-16'
而不是

between '2009-06-16' and '2009-06-01'
使用between时也要小心,因为您将从较大的日期中获取午夜值,而不获取其他值


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

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

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

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

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

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

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

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

请添加有关哪个DBMS的更多信息,相关表的描述,错误消息(如果有)等。如果MySQL:您的OrderDate是“日期”类型列还是“timestamp”列?请添加有关哪个DBMS的更多信息、相关表的描述、错误消息(如果有)等。如果MySQL:您的OrderDate是“日期”类型列还是“时间戳”“专栏?哇。我需要更多的咖啡。真不敢相信我竟然忽略了这么简单的事情。我需要更多的咖啡。我不敢相信我忽略了这么简单的事情。