declare @data datetime set @data = '2011-01-59:99select @data结果是: ( A( v$ w U$ M" d 2011-01-02 00:00:00.000第二个例子:6 P. Q% H, f9 T" r& w4 k
declare @data datetime set @data = '2011-01-59:99select 1 where @data >= '2011-01-02 00:00:00:000'结果" m4 P" t. c ], G! t% V6 v) U
1我的问题是为什么,如何使它正确?5 y! p7 } \) l: n
编辑问题是在SQL Server 2008中$ z* H8 t8 z' z( K2 V
' Q }# ^% d2 v. F解决方案: 4 I- D8 R {# [2 w' M
您有精度问题。.九九九会四舍五入.000。# x4 i h" u4 _! L. V, M5 S H* Y
.尽可能接近第二天。' M9 C) Y5 k. w3 V
declare @data datetimeset @data = '2011-01-01T23:59:59.997'select @data这里查看日期时间小数秒精度舍入部分 http://msdn.microsoft.com/zh-* _# J5 i" e5 e/ {3 \! ?
cn/library/ms187819.aspx 6 K* V& P5 _$ Y假如你用的是SQL Server 2008,可以datetime2(3)设置为毫秒级。