我跑的查詢中,我想找到所有作了開始6月1日的訂單本來我用這個代碼:SQL日期時間格式給出不同的結果
select blah blah
Where ORDERS.ORDER_DATE > '2016-05-31 23:59:59.999'
但查詢失敗以選擇6月1日訂單。當我更改代碼:
Where ORDERS.ORDER_DATE > '2016-05-31 23:59:59.99'
我得到了6月1日的訂單。差別在於末尾的_2_ nines (.99)
與_3_ nines (.999
)在幾秒鐘內。數據總是在分數中顯示3個數字。 (我們的數據只顯示零秒的分數"XX:XX:XX.000"
)
這是怎麼回事?
賠率是一對一的,但只有>會在午夜時忽略任何交易。這就是說,感謝3毫秒的項目。這正是我改變我的方法之前所見證的。 –
是在午夜時分,但是想想看,當您使用這樣的DATETIME過濾器時,如果真的將其應用於僅僅是DATE的列,這意味着所有事情都是午夜,那麼您實際上在6/1上排除了每個結果,而不是午夜。這是不使用BETWEEN並在一側使用> =(或<=)並且僅在另一側使用>或<的另一個主要原因。 – Matt
3ms舍入不完全正確:「datetime值將四捨五入爲.000,.003或.007秒的增量,如下表所示。「 https://msdn.microsoft.com/en-us/library/ms187819.aspx實際上,10中的4取整爲.XX7。這不適用於'datetime2'。 – shawnt00