UTC и смещение даты и времени сравниваются на сервере sql - PullRequest
0 голосов
/ 05 июня 2018

Я храню дату и время в формате UTC в базе данных

например

2018-06-05 11: 37: 00.000 (UTC)

2018-06-0517:07 (+5: 30 Индийское стандартное время)

Я имею смещение как:

смещение как +02: 00

Как я могу сравнить в SQL-запросе, что теперь совпало время смещения?

например

2018-06-05 13: 37: 00.000

Myпроблема в том, что время X (IST) конвертировано в UTC, и теперь я хочу преобразовать его в другой часовой пояс (Y)

Ответы [ 2 ]

0 голосов
/ 07 июня 2018

Следующие функции помогают мне решить проблему:

1.SWITCHOFFSET

2.TODATETIMEOFFSET

SELECT GETDATE()

SELECT SWITCHOFFSET(GETDATE(), '+05:30')  

SELECT CONVERT(VARCHAR(19), SWITCHOFFSET(TODATETIMEOFFSET(GETDATE(), '+05:30'),'+00:00'), 120)

SELECT GETUTCDATE()
0 голосов
/ 05 июня 2018

Если я правильно понимаю ваш вопрос, вы можете использовать функцию DATEADD для расчета нового времени и даты на основе времени-времени UTC и смещения

Например:

2 часа = 120 минут

DATEADD(minute, 120, '2018-06-05 11:37:00.000')

Или с использованием часов

DATEADD(hour, 2, '2018-06-05 11:37:00.000')

Вы также можете пойти другим путем, используя отрицательные числа

Вам не нужно использовать буквальное значение, вы можете указатьимя столбца для параметра 3 для использования в запросе, а также использовать это выражение как часть предложения where


Вот шпаргалка для функции DATEADD:

https://docs.microsoft.com/en-us/sql/t-sql/functions/dateadd-transact-sql?view=sql-server-2017

...