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

SQLServer-TIME値を次の分に丸めます

    SELECT  DATEADD(MINUTE, CEILING(DATEDIFF(SECOND, 0, CAST(CAST(PA.ORA_INIZIO AS DATETIME) AS TIME)) / 60.0), DATEDIFF(DAY, 0, PA.ORA_INIZIO)) AS BEGIN_TIME_ROUNDED
    

    編集

    コメントで指摘されているように、これは0〜1秒の間失敗します。これは、天井の精度を秒からミリ秒に変更するだけで対処できます。

    SELECT  PA.ORA_INIZIO,
            DATEADD(MINUTE, 
                CEILING(DATEDIFF(MILLISECOND, 0, CAST(PA.ORA_INIZIO AS TIME)) / 60000.0),
                DATEDIFF(DAY, 0, PA.ORA_INIZIO)) AS BEGIN_TIME_ROUNDED
    FROM (VALUES 
            (CONVERT(DATETIME, '20211126 15:59:00.997')), 
            (CONVERT(DATETIME, '20211126 15:59:00.004'))
        ) AS PA (ORA_INIZIO);
    

    ORA_INIZIO BEGIN_TIME_ROUNDED
    2021-11-26 15:59:59.997 2021-11-26 16:00:00.000
    2021-11-26 15:59:00.003 2021-11-26 16:00:00.000


    1. 結合を使用したOracleUpdateクエリ

    2. dockerpostgresイメージ10.3のpg_restoreを10.5にアップグレードする方法

    3. リンク サーバーの挿入と選択のパフォーマンス

    4. ロギングにデータベースを使用する