【发布时间】:2011-05-10 01:11:00
【问题描述】:
SQL Server 2005:
以下视图
SELECT CONVERT(VARCHAR(20), keyedtimestamp, 101) as KeyedDate
FROM TMSSTATFILE_STATS a
WHERE (CONVERT(VARCHAR(20), a.KeyedTimestamp, 101) BETWEEN '03/01/2011' And '03/31/2011')
ORDER BY KeyedDate
结果为关键日期 2011 年 3 月 2 日至 2011 年 3 月 31 日。
如果我将第一个日期更改为 03/00/2011
SELECT CONVERT(VARCHAR(20), keyedtimestamp, 101) as KeyedDate
FROM TMSSTATFILE_STATS a
WHERE (CONVERT(VARCHAR(20), a.KeyedTimestamp, 101) BETWEEN '03/00/2011' And '03/31/2011')
ORDER BY KeyedDate
它现在提供日期为 2011 年 3 月 1 日至 2011 年 3 月 31 日的数据
KeyedTimestamp 字段是 DateTime,并且有与这些记录相关联的时间。 2011 年 3 月 31 日的所有记录均已计算在内。我知道我可以通过在第二个日期之间提供最大时间来做到这一点,所以我不是在寻找替代 where 子句,而是理解为什么它忽略了第一个记录,即使它包含了这些记录从 31 日开始。
它几乎就像它检查 3/1/2011 23:59:59,我希望我可以消除这种我只关心日期而不是时间的检查
【问题讨论】:
标签: sql-server between