close

MS SQL的DATETIME精度只有1/300秒, 因此毫秒的個位數只會看到0、3、7,也就是x.xx0、x.xx3、x.xx7.不在這3個範圍的都會被自動捨入到接近的值。以下是測試的情況:

SELECT CAST('2021-12-31 23:59:59.990' AS DATETIME)-->2021-12-31 23:59:59.990
SELECT CAST('2021-12-31 23:59:59.991' AS DATETIME)-->2021-12-31 23:59:59.990
SELECT CAST('2021-12-31 23:59:59.992' AS DATETIME)-->2021-12-31 23:59:59.993
SELECT CAST('2021-12-31 23:59:59.993' AS DATETIME)-->2021-12-31 23:59:59.993
SELECT CAST('2021-12-31 23:59:59.994' AS DATETIME)-->2021-12-31 23:59:59.993
SELECT CAST('2021-12-31 23:59:59.995' AS DATETIME)-->2021-12-31 23:59:59.997
SELECT CAST('2021-12-31 23:59:59.996' AS DATETIME)-->2021-12-31 23:59:59.997
SELECT CAST('2021-12-31 23:59:59.997' AS DATETIME)-->2021-12-31 23:59:59.997
SELECT CAST('2021-12-31 23:59:59.998' AS DATETIME)-->2021-12-31 23:59:59.997
SELECT CAST('2021-12-31 23:59:59.999' AS DATETIME)-->2022-01-01 00:00:00.000

所以在查詢或是寫入部分23:59:59.999就會進位成隔日,這樣小心使用,查詢到秒就用.000 ~.997來當成查詢範圍也就足夠用了。

測試SQLITE倒是沒這個問題。

arrow
arrow
    文章標籤
    MS SQL DATETIME
    全站熱搜

    大衛的記事 發表在 痞客邦 留言(0) 人氣()