Du kan gøre dette på følgende måde på SQL Server 2008 eller nyere:
SELECT CONVERT(datetime,
SWITCHOFFSET(CONVERT(datetimeoffset,
MyTable.UtcColumn),
DATENAME(TzOffset, SYSDATETIMEOFFSET())))
AS ColumnInLocalTime
FROM MyTable
Du kan også gøre det mindre udførlige:
SELECT DATEADD(mi, DATEDIFF(mi, GETUTCDATE(), GETDATE()), MyTable.UtcColumn)
AS ColumnInLocalTime
FROM MyTable
Uanset hvad du gør, ikke brug -
at trække datoer fra, fordi operationen ikke er atomart, og du vil til tider få ubestemte resultater på grund af raceforhold mellem systemets datetime og det lokale datetime, der kontrolleres på forskellige tidspunkter (dvs. ikke-atomisk).
Bemærk venligst, at dette svar ikke tager højde for sommertid. Hvis du vil inkludere en sommertid-justering, se venligst også følgende SO-spørgsmål:
Sådan opretter du sommertid start- og slutfunktion i SQL Server