Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Есть ли разница типа TIMESTAMP в оракле и mssql'е  [new]
time stamp
Guest
Добрый день.

Это одно и тоже или нет?
17 май 16, 15:27    [19184397]     Ответить | Цитировать Сообщить модератору
 Re: Есть ли разница типа TIMESTAMP в оракле и mssql'е  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4804
time stamp
Добрый день.

Это одно и тоже или нет?


Это совсем разные вещи. TIMESTAMP в MSSQL вообще хранит не время.

https://technet.microsoft.com/en-us/library/ms182776(v=sql.110).aspx
17 май 16, 15:34    [19184444]     Ответить | Цитировать Сообщить модератору
 Re: Есть ли разница типа TIMESTAMP в оракле и mssql'е  [new]
time stamp
Guest
a_voronin,

Я так и понял. Можно ли отконвертировать тип DATETIME в нормальный TIMESTAMP (юникс таймстэмп)?
17 май 16, 15:45    [19184525]     Ответить | Цитировать Сообщить модератору
 Re: Есть ли разница типа TIMESTAMP в оракле и mssql'е  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
time stamp
юникс таймстэмп
Так что ли?
SELECT DATEDIFF(SECOND,'1970',CURRENT_TIMESTAMP)
17 май 16, 15:52    [19184587]     Ответить | Цитировать Сообщить модератору
 Re: Есть ли разница типа TIMESTAMP в оракле и mssql'е  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
iap
time stamp
юникс таймстэмп
Так что ли?
SELECT DATEDIFF(SECOND,'1970',CURRENT_TIMESTAMP)
Вместо CURRENT_TIMESTAMP - ваша дата, разумеется
17 май 16, 15:52    [19184594]     Ответить | Цитировать Сообщить модератору
 Re: Есть ли разница типа TIMESTAMP в оракле и mssql'е  [new]
Ferdipux
Member

Откуда: Москва
Сообщений: 554
iap
time stamp
юникс таймстэмп
Так что ли?
SELECT DATEDIFF(SECOND,'1970',CURRENT_TIMESTAMP)

Только оно не учитывает, что UNIX TS отсчитывает от 1970-01-01 UTC. Рабочий код с учетом коррекции на UTC
SELECT DATEDIFF(SECOND, DATEADD(SECOND, DATEDIFF(SECOND, GETUTCDATE(), GETDATE()), '1970-01-01'), ваша дата)
17 май 16, 17:32    [19185267]     Ответить | Цитировать Сообщить модератору
 Re: Есть ли разница типа TIMESTAMP в оракле и mssql'е  [new]
time stamp
Guest
iap,

спасибо, да то что нужно.
А как обратно перевести? не могу допенькать
17 май 16, 17:46    [19185325]     Ответить | Цитировать Сообщить модератору
 Re: Есть ли разница типа TIMESTAMP в оракле и mssql'е  [new]
iljy
Member

Откуда:
Сообщений: 8711
time stamp,

DATEADD?
17 май 16, 17:48    [19185341]     Ответить | Цитировать Сообщить модератору
 Re: Есть ли разница типа TIMESTAMP в оракле и mssql'е  [new]
time stamp
Guest
iljy,

Спасибо, уже сам разобрался... может кому пригодится:

SELECT
DATEDIFF(SECOND, '1970-01-01', GETDATE()) AS [TIMESTAMP],
DATEADD(SECOND,
DATEDIFF(SECOND, '1970-01-01', GETDATE()),
'1970-01-01 00:00:00') AS [DATETIME]
17 май 16, 18:12    [19185421]     Ответить | Цитировать Сообщить модератору
 Re: Есть ли разница типа TIMESTAMP в оракле и mssql'е  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4804
time stamp
iljy,

Спасибо, уже сам разобрался... может кому пригодится:

SELECT
DATEDIFF(SECOND, '1970-01-01', GETDATE()) AS [TIMESTAMP],
DATEADD(SECOND,
DATEDIFF(SECOND, '1970-01-01', GETDATE()),
'1970-01-01 00:00:00') AS [DATETIME]


Имейте ввиду, что там не далеко до переполнения INT32
17 май 16, 20:21    [19185834]     Ответить | Цитировать Сообщить модератору
 Re: Есть ли разница типа TIMESTAMP в оракле и mssql'е  [new]
Ferdipux
Member

Откуда: Москва
Сообщений: 554
a_voronin
Имейте ввиду, что там не далеко до переполнения INT32

Так до 2038 года неблизко. А если у вас это проблема - есть DATEDIFF_BIG правда только начиная с SQL 2016.
18 май 16, 08:55    [19186916]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить