W SQL Server TODATETIMEOFFSET()
funkcja została specjalnie zaprojektowana do zwracania datetimeoffset wartość z datetime2 wartość.
Biorąc pod uwagę fakt, że datetime2 typ danych w rzeczywistości nie obsługuje przesunięć stref czasowych, a datetimeoffset musi zawierać przesunięcie, TODATETIMEOFFSET()
funkcja pozwala określić przesunięcie strefy czasowej do użycia.
Ten artykuł zawiera kilka przykładów do zademonstrowania.
Podstawowe użycie
Oto przykład typowego użycia TODATETIMEOFFSET()
funkcjonować.
DECLARE @dt datetime2 ='2020-12-20 17:33:59.8900000';SELECT @dt AS [dataczas2], TODATETIMEOFFSET(@dt, '+07:00') AS [datetimeoffset];
Wynik (przy użyciu wyjścia pionowego):
W takim przypadku zwracam oryginał datetime2 wartość i wynikowe przesunięcie daty/czasu wartość.
W rezultacie oryginalna data/godzina jest taka sama, z wyjątkiem dołączonego przesunięcia strefy czasowej.
Zakres wynosi od +14 do -14 (w godzinach). Wyrażenie jest interpretowane w czasie lokalnym dla określonej strefy czasowej.
Określ przesunięcie strefy czasowej w minutach
Alternatywnie można określić przesunięcie strefy czasowej w minutach. Oto przykład.
DECLARE @dt datetime2 ='2020-12-20 17:33:59.8900000';SELECT @dt AS [dataczas2], TODATETIMEOFFSET(@dt, +120) AS [datetimeoffset];
Wynik (przy użyciu wyjścia pionowego):
W tym przypadku podałem +120 minut, czyli dwie godziny. Rezultatem było przesunięcie strefy czasowej o +02:00 (czyli plus dwie godziny).
Należy również pamiętać, że po podaniu przesunięcia strefy czasowej w minutach podaje się je jako wartość całkowitą. Z drugiej strony, gdy podajesz go w godzinach, musisz określić go jako ciąg.
Zobacz Konwertowanie daty na inną strefę czasową, aby zobaczyć przykłady, jak to zrobić.