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