U kunt dit als volgt doen op SQL Server 2008 of hoger:
SELECT CONVERT(datetime,
SWITCHOFFSET(CONVERT(datetimeoffset,
MyTable.UtcColumn),
DATENAME(TzOffset, SYSDATETIMEOFFSET())))
AS ColumnInLocalTime
FROM MyTable
Je kunt ook het minder uitgebreide doen:
SELECT DATEADD(mi, DATEDIFF(mi, GETUTCDATE(), GETDATE()), MyTable.UtcColumn)
AS ColumnInLocalTime
FROM MyTable
Wat je ook doet, niet doen gebruik -
om datums af te trekken, omdat de bewerking niet atomair is, en u af en toe onbepaalde resultaten krijgt vanwege raceomstandigheden tussen de systeemdatum/tijd en de lokale datum/tijd die op verschillende tijdstippen wordt gecontroleerd (d.w.z. niet-atomisch).
Houd er rekening mee dat dit antwoord geen rekening houdt met de zomertijd. Als u een zomertijdaanpassing wilt opnemen, raadpleeg dan ook de volgende SO-vraag:
Hoe u de begin- en eindfunctie voor zomertijd kunt maken in SQL Server