W SQL Server muszę znaleźć przesunięcie danego datetimeoffset(7)
.Uzyskiwanie przesunięcia datetimeoffset w SQL Server
Ja zbadałem dokumentację i są wszystkie sposoby na zmianę przesunięcia, ale nie sposób na poznanie przesunięcia określonej wartości (przepraszam, jeśli ją przegapiłem).
Cóż, wymyśliłem następujący fragment kodu, który wydaje mi się zbyt skomplikowany, chociaż wydaje się działać.
DECLARE @datetimeOffset datetimeoffset(7)
SET @datetimeOffset = CAST('2007-05-08 22:35:29.1234567-05:00' AS datetimeoffset(7))
DECLARE @result datetimeoffset(7)
DECLARE @offsetMin int
SET @offsetMin = DATEDIFF(mi, cast(SWITCHOFFSET(@datetimeOffset, '+00:00') as datetime), cast(@datetimeOffset as datetime))
SELECT @offsetMin
mam jeszcze zrobić konwersję do +00: 00 formacie ale chciał sprawdzić, czy istnieje lepszy sposób to zrobić.
Dzięki!
Możesz także uzyskać DATENAME (tz, @datetimeoffset), aby uzyskać offset jako varchar. –
'TZOFFSET' działa w miejsce' tz' i, o ile jest to warte, jest rozpoznawany przez zakreślacz składni SSMS. –
Działa to tylko w SSMS 2012+ – codeMonkey