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

Ubah kolom Datetime dari UTC ke waktu lokal di pernyataan pilih

Anda dapat melakukan ini sebagai berikut pada SQL Server 2008 atau yang lebih baru:

SELECT CONVERT(datetime, 
               SWITCHOFFSET(CONVERT(datetimeoffset, 
                                    MyTable.UtcColumn), 
                            DATENAME(TzOffset, SYSDATETIMEOFFSET()))) 
       AS ColumnInLocalTime
FROM MyTable

Anda juga dapat melakukan lebih sedikit verbose:

SELECT DATEADD(mi, DATEDIFF(mi, GETUTCDATE(), GETDATE()), MyTable.UtcColumn) 
       AS ColumnInLocalTime
FROM MyTable

Apa pun yang Anda lakukan, jangan gunakan - untuk mengurangi tanggal, karena operasinya bukan atomik, dan Anda kadang-kadang akan mendapatkan hasil tak tentu karena kondisi balapan antara datetime sistem dan datetime lokal yang diperiksa pada waktu yang berbeda (yaitu, non-atomik).

Harap dicatat bahwa jawaban ini tidak memperhitungkan DST. Jika Anda ingin menyertakan penyesuaian DST, lihat juga pertanyaan SO berikut:

Cara membuat fungsi Mulai dan Akhir Waktu Musim Panas di SQL Server



  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 Internal:Rencana Caching Pt. II – Menyusun Ulang Rencana

  2. Cara Membuat Ekstensi untuk SSMS 2019 (v18)

  3. Lihat Riwayat Pekerjaan Agen SQL Server dengan SSMS

  4. Kinerja SQL Server TOP CPU Query -2

  5. Menghitung DISTINCT pada beberapa kolom