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 日起。
几乎就像它检查 2011 年 3 月 1 日 23:59:59,我希望我可以消除这种我只关心日期而不是时间的检查