SQL服务器搜索日期范围

时间:2014-02-17 16:41:29

标签: sql sql-server

在SQL Server中,搜索日期范围时是否必须指定时间戳?例如,这两个查询将返回相同的结果。

SELECT SalesOrderID,   ShipDate
FROM Sales.SalesOrderHeader
WHERE ShipDate BETWEEN '2005-07-23T00:00:00' AND '2005-07-24T23:59:59';

SELECT SalesOrderID,   ShipDate
FROM Sales.SalesOrderHeader
WHERE ShipDate BETWEEN '2005-07-23' AND '2005-07-24';

2 个答案:

答案 0 :(得分:3)

BETWEEN包含在内,未指定时的默认时间为00:00:00。

因此,如果您排除时间部分并且您的字段为DATETIME,则您将在结束日之后的00:00:00之后排除任何记录。如果您的字段属于DATE类型,则无需时间。

您也可以稍后使用<

WHERE ShipDate >= '2005-07-23' 
   AND ShipDate < '2005-07-25'

答案 1 :(得分:0)

尝试:

SELECT SalesOrderID,   ShipDate
FROM Sales.SalesOrderHeader
WHERE cast(ShipDate as date) BETWEEN cast('20050723' as date) AND cast('20050724' as date);

当演员到日期类型时,你不需要写小时,分钟......:)