Na serveru SQL Server 2008 nebo novějším to můžete provést následovně:
SELECT CONVERT(datetime,
SWITCHOFFSET(CONVERT(datetimeoffset,
MyTable.UtcColumn),
DATENAME(TzOffset, SYSDATETIMEOFFSET())))
AS ColumnInLocalTime
FROM MyTable
Můžete také udělat méně podrobné:
SELECT DATEADD(mi, DATEDIFF(mi, GETUTCDATE(), GETDATE()), MyTable.UtcColumn)
AS ColumnInLocalTime
FROM MyTable
Ať děláte cokoli, nedělejte to použijte -
odečíst data, protože operace není atomická a příležitostně získáte neurčité výsledky kvůli podmínkám závodů mezi systémovým datetime a místním datetime kontrolovaným v různých časech (tj. neatomicky).
Upozorňujeme, že tato odpověď nebere v úvahu letní čas. Pokud chcete zahrnout úpravu DST, podívejte se také na následující otázku SO:
Jak vytvořit funkci začátku a konce letního času v SQL Server