这两个查询返回的订单数量不同,究竟为什么还不太清楚。第一个
where
子句是被认可的正确
版本:where
year(OrderDate) = 2011
and MONTH(OrderDate) = 8
and DAY(OrderDate) = 3
但是如果我说类似的话:
WHERE
io.OrderDate >= '2011-08-03 00:00:00'
and io.OrderDate <= '2011-08-03 11:59:59'
我得到了完全不同的记录数。是日期格式有误还是逻辑上有缺陷?我倾向于后者,因为在我看来它更易于使用。
select cast('2011-08-03 23:59:59.999' as datetime)
。你的第二个版本将包括 OrderDate 是2011-08-04 00:00:00
的行。 - Mikael Eriksson