はい、SQL Server 時間を3.(3)に丸めます ミリ秒:
SELECT CAST(CAST('2009-01-01 00:00:00.000' AS DATETIME) AS BINARY(8))
SELECT CAST(CAST('2009-01-01 00:00:01.000' AS DATETIME) AS BINARY(8))
0x00009B8400000000
0x00009B840000012C
ご覧のとおり、これらのDATETIME は1によって異なります 次に、それらのバイナリ表現は0x12Cによって異なります。 、つまり300 10進数で。
これは、SQL Serverが原因です。 timeを保存します DATETIMEの一部 1/300の数として 真夜中から2番目のダニ。
より正確にしたい場合は、TIMEを保存する必要があります 別の値としての部分。同様に、時間を1秒に丸めてDATETIMEとして保存します。 、およびミリ秒またはINTEGERとして必要な精度 別の列にあります。
これにより、複雑なDATETIMEを使用できるようになります DATETIMEで月を追加したり、曜日を検索したりするなどの算術演算 の場合、ミリ秒を加算または減算して、結果を.XXXXXX+HH:MMとして連結できます。 有効なXMLを取得するには 表現。