sql >> データベース >  >> RDS >> Sqlserver

SQL Server でミリ秒を含む datetime フィールドをクエリすると間違った結果が返される

    SQL Server 時間部分を 1/300 の数として保存します 真夜中から 2 番目のティック。

    23:59:59.999 00:00:00.000 である最も近いティックに丸められます

    SELECT  CAST(CAST('2009-12-01 00:00:00.000' AS DATETIME) AS BINARY(8)),
            CAST(CAST('2009-12-01 23:59:59.997' AS DATETIME) AS BINARY(8)),
            CAST(CAST('2009-12-01 23:59:59.999' AS DATETIME) AS BINARY(8))
    
    
    
    0x00009B8F 00000000    0x00009B8F 018B81FF    0x00009B90 00000000
    

    最初の値の日付部分 0x9B8F (39823 ) は Jan 1st, 1900 からの日数です 、および時刻部分 0 は、午前 0 時からのティック数です。

    2 番目の値では、0x018B81FF (25919999 、または 24 * 60 * 60 * 300 - 1 ) は、午前 0 時から可能な最大ティック数です。

    最後に、3 番目の値は 0 です。 時刻の部分と日付の部分が 1 つ増えます。



    1. Django:例外値(2013、 '2013:クエリ中にMySQLサーバーへの接続が失われました'、なし)

    2. SQLServerの動的ピボットテーブル

    3. `GROUP BY`を使用せずに集計するにはどうすればよいですか?

    4. flywayを使用して1つのDBから別のDBにデータを移行するにはどうすればよいですか?