想要从一天中获取所有记录。2013-03-05 00:00:00.000
所以和之间的一切2013-03-05 23:59:59.999
。我们在后端与发生在2013-03-06 00:00:00.000
.
因此,在测试中我在 SSMS 中运行:
select cast('2013-03-05 23:59:59.999' as datetime)
select cast('2013-03-05 23:59:59.996' as datetime)
select cast('2013-03-05 23:59:59.994' as datetime)
并得到:
2013-03-06 00:00:00.000
2013-03-05 23:59:59.997
2013-03-05 23:59:59.993
毫秒部分回来了一点。在第一行的情况下,它真的很重要。因为我不想要 2013-03-06 00:00:00.000 - 我想要午夜前的一毫秒。
TSQL 在文档中声明它使用小数秒,而不是使用毫秒的 .Net datetime。这似乎只是语法差异,但如果您真的关心 TSQL 中的毫秒精度,您是否被迫全面使用DateTime2
。将 from 转换为datetime2
todatetime
仍然会使事情恶化几毫秒。
在 c#DateTime.Parse("03/5/2013 23:59:59.999").Millisecond
中仍然返回 999。
我解释得好吗?如果我关心毫秒精度,我datetime2
只会坚持。
通常这将是一个简单的修复,但在这种情况下,我们使用的是datetime
作为参数接收的 Microsoft 系统函数。
由于舍入,您必须指定 23:59:59.997,而不是指定 23:59:59.999。
更好的方法是:
由于这捕获了 2013-03-05 上的所有活动