Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SQL Server - Закръглете стойностите на 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Моментни снимки на базата данни на SQL Server -2

  2. Функцията SUM не събира правилно

  3. Как да промените пощенския профил на база данни по подразбиране за потребител в SQL Server (T-SQL)

  4. T-SQL Изтрива всички редове от таблица, когато подзаявката е неправилно формирана

  5. Мога ли да запазя „обект“ в база данни на SQL Server?