Сроки сравнения в SQL Server 2008 - PullRequest
5 голосов
/ 22 июля 2010

Как сравнить индийское время с временем других стран мира в SQL Server 2008?

Означает, что я хочу знать, будет ли в Индии середина ночи 1 час ночи в других странах через SQL Server 2008

Ответы [ 3 ]

2 голосов
/ 22 июля 2010

Посмотрите на SYSUTCDATETIME():

SELECT SYSDATETIME(), SYSUTCDATETIME();

С UTC Time вы можете легко рассчитать время в любой другой стране.

2 голосов
/ 22 июля 2010

SQL Server 2008 использует тип DateTimeOffset для представления DateTime со смещением часового пояса.

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

Чтобы создать значения DateTimeOffset для определенного часового пояса из существующих значений даты, используйте TODATETIMEOFFSET .

Вы можете получить текущую дату и время, включая смещение, используя SYSDATETIMEOFFSET .

Наконец, вы можете использовать старые DATEDIFF для сравнения значений DateTimeOffset и получения их разности.

Чтобы узнать текущее время в Индии и переключить его на другой часовой поясдолжен знать правильное смещение времени.Заявление будет что-то вроде

DECLARE @localTime DATETIMEOFFSET=SYSDATETIMEOFFSET()
SELECT @localTime, SWITCHOFFSET(@localTime,'-5:00')
0 голосов
/ 22 июля 2010
DECLARE @indianTime DATETIME = GETDATE()
DECLARE @timeZoneOffset SMALLINT = 3 -- or -3

SELECT DATEADD(hour, @timeZoneOffset, @indianTime)

См. Следующие статьи MSDN: 1 , 2

Но лучше использовать SQL Server 2008 и тип DateTimeOffset, который поддерживает часовые пояса.

Так что вы можете сделать следующее:

DECLARE @indianTime DATETIME = SYSDATETIMEOFFSET()
DECLARE @timeZoneOffset NVARCHAR(6) = '-03:00'

SELECT SWITCHOFFSET(@indianTime, @timeZoneOffset)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...