Как преобразовать datetime из UTC в местное время

Прошу прощения, если это очень просто, я все еще новичок в SQL и учусь каждый день. Я пытаюсь сделать запрос

SELECT ProjectName,
       RequestNumber,
       ContactId,
       ContactFirstName,
       ContactLastName,
       RequestReceivedDate,
       RequestCloseDate,
       Category,
       SubCategory,
       AssignedResourceId,
       OwningResourceId,
       RequestSource,
       ClosedImmediatelyFlag,
       RequestStatusCode
FROM dbo.system_requests;

НО мои RequestReceivedDate и RequestCloseDate отключены на 5 часов. Я не могу создать функцию, поскольку я работаю с базой данных поставщика, поэтому хочу преобразовать UTC в местное время в моем операторе выбора и просто не уверен, как это лучше сделать?

Мысли?

Какая у вас система БД? Оракул?

jyao 25.10.2018 17:49

система базы данных будет SQL

Lyndi Andersen 25.10.2018 17:55

SQL используется повсюду в любой системе СУБД, такой как Oracle, SQL Server, DB2, Sybase и т. д. Итак, вы не отвечаете на мой вопрос.

jyao 25.10.2018 18:24

Привет, извините, снова супер новый и все еще очень много учусь, поэтому приношу свои извинения, но это SQL Server 2017

Lyndi Andersen 25.10.2018 19:10

Вы можете проверить эту ссылку: Преобразование столбца Datetime из UTC в местное время в инструкции select

jyao 25.10.2018 19:13
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
5
142
2

Ответы 2

SQL Server 2016 поддерживает часовые пояса с помощью оператора AT TIME ZONE «UTC». Ты можешь сделать это:

SELECT ProjectName,
       RequestNumber,
       ContactId,
       ContactFirstName,
       ContactLastName,
       RequestReceivedDate AT TIME ZONE 'UTC',
       RequestCloseDate AT TIME ZONE 'UTC',
       Category,
       SubCategory,
       AssignedResourceId,
       OwningResourceId,
       RequestSource,
       ClosedImmediatelyFlag,
       RequestStatusCode
FROM dbo.system_requests;

Вы можете искать "AT TIME ZONE" в Google.

В итоге я сделал это, и это сработало и дало мне то, что я хотел:

           SELECT CONVERT(
                             DATETIME,
                             SWITCHOFFSET(
                                             CONVERT(DATETIMEOFFSET, system_requests.RequestReceivedDate),
                                             DATENAME(TzOffset, SYSDATETIMEOFFSET())
                                         )
                         ) AS RequestReceivedDate
       ),
       (
           SELECT CONVERT(
                             DATETIME,
                             SWITCHOFFSET(
                                             CONVERT(DATETIMEOFFSET, system_requests.RequestCloseDate),
                                             DATENAME(TzOffset, SYSDATETIMEOFFSET())
                                       )
                         ) AS RequestClosedDate

Другие вопросы по теме