在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';
答案 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);
当演员到日期类型时,你不需要写小时,分钟......:)