Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

SQL Server - Putar nilai TIME ke menit berikutnya

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

EDIT

Seperti yang ditunjukkan dalam komentar, ini gagal untuk waktu antara 0 dan 1 detik. Ini dapat diatasi hanya dengan mengubah presisi di langit-langit dari detik menjadi milidetik:

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

Yang memberikan:

ORA_INIZIO BEGIN_TIME_ROUNDED
26-11-2011 15:59:59.997 21-11-26 16:00:00.000
26-11-2011 15:59:00.003 21-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. Apakah JPA 2.0 mendukung variabel tabel SQL Server?

  2. CONCAT(kolom) LEBIH(PARTISI OLEH...)? Baris gabungan grup tanpa mengelompokkan hasilnya sendiri

  3. SQL Query lambat dalam aplikasi .NET tetapi seketika di SQL Server Management Studio

  4. Pengantar Fungsi Bernilai Tabel Multi-Pernyataan (MSTVF) di SQL Server

  5. Permintaan tanggal SQL Server