sql >> Database teknologi >  >> RDS >> Sqlserver

SQL Server - Afrund TIME værdier til næste minut

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

REDIGER

Som påpeget i en kommentar mislykkes dette i tider mellem 0 og 1 sekund. Dette kan bekæmpes ved blot at ændre præcisionen i loftet fra sekunder til millisekunder:

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);

Hvilket giver:

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. databaseskema for produktattributter

  2. Sådan opnår du PCI-overensstemmelse for MySQL &MariaDB med ClusterControl - The Replay

  3. Hvordan kan jeg tjekke for dubletter, før jeg indsætter i en tabel, når jeg indsætter ved at vælge

  4. MySQL - Betingede udenlandske nøglebegrænsninger