我在我们现有的一个存储过程中找到了以下查询。此查询用于在两个日期时间值之间进行记录。在SQL Server中的两个日期时间之间获取记录
SELECT office
FROM officebudget
WHERE officeid = @officeid
AND (
(CONVERT(DATE, DateFrom) BETWEEN @wkstdate AND @wkenddate)
OR (CONVERT(DATE, DateTo) BETWEEN @wkstdate AND @wkenddate));
我有如下改写它,
SELECT office
FROM officebudget
WHERE officeid = @officeid
AND (
(
bkto.DateFrom >= @wkstdate
AND bkto.DateFrom <= @wkenddate
)
OR (bkto.DateTo >= @wkstdate
AND bkto.DateTo <= @wkenddate)
);
我得到了这两种情况下相同的结果。但我需要知道在上述两个查询都会产生 不同结果的任何场景中?
(PS:DateFrom,DateTo,@Wkstdate,@Wkenddate是datetime
字段)
@wkstdate!='2015-09-30' –
对不起,查询可以产生不同的结果。这是一个硬编码的价值。现在我编辑了问题 – bmsqldev
'DateFrom'和'DateTo'是否有非零时间分量?如果是这样的话,那么您会错过第一个查询去除时间组件的转换(加上第一个查询中的转换目前已被破坏 - 当两个查询中的一个甚至不能完成时询问两个查询是否执行相同的操作编译) –