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

XMLからSQLServerの日時に変換するときにミリ秒が間違っている

    はい、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
    

    ご覧のとおり、これらのDATETIME1によって異なります 次に、それらのバイナリ表現は0x12Cによって異なります。 、つまり300 10進数で。

    これは、SQL Serverが原因です。 timeを保存します DATETIMEの一部 1/300の数として 真夜中から2番目のダニ。

    より正確にしたい場合は、TIMEを保存する必要があります 別の値としての部分。同様に、時間を1秒に丸めてDATETIMEとして保存します。 、およびミリ秒またはINTEGERとして必要な精度 別の列にあります。

    これにより、複雑なDATETIMEを使用できるようになります DATETIMEで月を追加したり、曜日を検索したりするなどの算術演算 の場合、ミリ秒を加算または減算して、結果を.XXXXXX+HH:MMとして連結できます。 有効なXMLを取得するには 表現。



    1. 自己参照テーブルからの階層データの取得

    2. Oracle.DataAccessエラー

    3. 複数のデータベーステーブルからのMysqlユニオン

    4. ORA-02014の解決方法:DISTINCT、GROUPBYのビューからFORUPDATEを選択できません