2013-07-16 2 views
5

Каким образом есть разница временные отметки в MySQL и MS SQL Server
MySQL:UNIX метка времени на MySQL и MSSQL Server

select now() result: 2013-07-16 08:49:26.0 

SQL Server:

select getdate() result: 2013-07-16 08:48:16.47 

и когда я пытаюсь получить unix_timestamp
MySQL:

SELECT UNIX_TIMESTAMP('2013-07-01') result: 1372629600 

SQL Server:

SELECT DATEDIFF(SECOND,'1970-01-01', '2013-07-01') result 1372636800 

проблема: есть разница 7200 секунд (2ч)
это проблема часовых поясов, времени сервера на обоих серверах такие же, как видно на now() и getdate()?

+0

Вы находитесь в часовом поясе + 2 часа? –

+0

UTC + 01: 00 Центральноевропейское время – mirkobrankovic

+2

Тогда это, вероятно, это плюс DST. –

ответ

2

Об использовании SQL Server

select datediff(ss, '1970-01-01', SYSDATETIMEOFFSET() at time zone 'UTC')

Здесь

SYSDATETIMEOFFSET() возвращает локальное время с местным часовым поясом смещение позволяет преобразование в UTC. Замените его своим полем datetimeoffset, если вы хотите что-то отличное от текущего.

4

Это довольно но это похоже на работу. Он учитывает смещение в часовых поясах.

SELECT DATEDIFF(SECOND, DATEADD(SECOND, DATEDIFF(SECOND, GETUTCDATE(), GETDATE()), '1970-01-01'), '2013-07-01') 
+0

Это замечательно, потому что вы можете использовать это для любого времени и времени, а не только сейчас. – nzn

1

Извините за поздний ответ, но это будет работать только на даты СЕЙЧАС. Если вам нужно проанализировать даты в прошлом, и у вас есть, например, разные временные зоны (лето/зима), это не будет работать должным образом.

Смежные вопросы