Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

SQL Server - Làm tròn các giá trị TIME đến phút tiếp theo

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

CHỈNH SỬA

Như đã chỉ ra trong một nhận xét, điều này không thành công trong khoảng thời gian từ 0 đến 1 giây. Điều này có thể được giải quyết bằng cách chỉ cần thay đổi độ chính xác trong trần nhà từ giây thành mili giây:

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

Điều này mang lại:

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. Chuyển đổi ‘time’ thành ‘smalldatetime’ trong SQL Server (Ví dụ T-SQL)

  2. MS Excel - kết hợp dữ liệu bên ngoài (SQL) với bảng cục bộ (trang tính)

  3. Làm thế nào để xoay bảng cho năm trong SQL?

  4. Cách thêm cột động vào bảng hiện có

  5. Làm thế nào để tìm một văn bản bên trong các thủ tục / trình kích hoạt SQL Server?