Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Получить дату+время из поля в формате bigint  [new]
Евгений Стронг
Member

Откуда:
Сообщений: 316
Всем привет!

БД на MSSQL 2014. В поле bigint лежит значение вида - 637494192000000000. Как преобразовать это значение в формат datetime?

Пытался так, но результат не совсем соответствуют тому, какое должно быть.

select dateadd(ms, 637493592800000000 / 864000000000 , convert(datetime, getdate()))


Разница примерно на 20 минут больше той, которая должна там лежать.
19 фев 21, 22:27    [22283828]     Ответить | Цитировать Сообщить модератору
 Re: Получить дату+время из поля в формате bigint  [new]
SIMPLicity_
Member

Откуда: (((@)))
Сообщений: 8818
864000000000 - чота дофига кажется. К-во нулей адекватное?

Сутки - это кажется 86400000 ms. Или я не прав?

Сообщение было отредактировано: 20 фев 21, 00:45
20 фев 21, 00:50    [22283854]     Ответить | Цитировать Сообщить модератору
 Re: Получить дату+время из поля в формате bigint  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3015
Евгений Стронг
Всем привет!

БД на MSSQL 2014. В поле bigint лежит значение вида - 637494192000000000. Как преобразовать это значение в формат datetime?

Пытался так, но результат не совсем соответствуют тому, какое должно быть.

select dateadd(ms, 637493592800000000 / 864000000000 , convert(datetime, getdate()))


Разница примерно на 20 минут больше той, которая должна там лежать.

Что-то я не совсем понял, Ваш код, но работает он правильно.
Вы к текущей дате прибавляете 737839 миллисекунд, что является 12 минут
20 фев 21, 08:02    [22283900]     Ответить | Цитировать Сообщить модератору
 Re: Получить дату+время из поля в формате bigint  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3015
Евгений Стронг
Всем привет!

БД на MSSQL 2014. В поле bigint лежит значение вида - 637494192000000000. Как преобразовать это значение в формат datetime?

Пытался так, но результат не совсем соответствуют тому, какое должно быть.

select dateadd(ms, 637493592800000000 / 864000000000 , convert(datetime, getdate()))


Разница примерно на 20 минут больше той, которая должна там лежать.

Вам скорее всего нужно это
select dateadd(ss, (63749359280000 - 62135596800000) / 1000, '19700101')

2021-02-19 19:21:20.000

где 62135596800000 = кол-во миллисекунд от 01.01.0001 до 01.01.1970

и да 637494192000000000 слишком большое и поэтому надо разделить на 10000

Сообщение было отредактировано: 20 фев 21, 08:32
20 фев 21, 08:39    [22283909]     Ответить | Цитировать Сообщить модератору
 Re: Получить дату+время из поля в формате bigint  [new]
aleks222
Member

Откуда:
Сообщений: 1236
Евгений Стронг
Всем привет!

БД на MSSQL 2014. В поле bigint лежит значение вида - 637494192000000000. Как преобразовать это значение в формат datetime?

Пытался так, но результат не совсем соответствуют тому, какое должно быть.

select dateadd(ms, 637493592800000000 / 864000000000 , convert(datetime, getdate()))


Разница примерно на 20 минут больше той, которая должна там лежать.


И чо, завтра там будет лежать ДРУГАЯ дата?
Бред.
20 фев 21, 15:56    [22284134]     Ответить | Цитировать Сообщить модератору
 Re: Получить дату+время из поля в формате bigint  [new]
Евгений Стронг
Member

Откуда:
Сообщений: 316
HandKot
Евгений Стронг
Всем привет!

БД на MSSQL 2014. В поле bigint лежит значение вида - 637494192000000000. Как преобразовать это значение в формат datetime?

Пытался так, но результат не совсем соответствуют тому, какое должно быть.

select dateadd(ms, 637493592800000000 / 864000000000 , convert(datetime, getdate()))


Разница примерно на 20 минут больше той, которая должна там лежать.

Вам скорее всего нужно это
select dateadd(ss, (63749359280000 - 62135596800000) / 1000, '19700101')

2021-02-19 19:21:20.000

где 62135596800000 = кол-во миллисекунд от 01.01.0001 до 01.01.1970

и да 637494192000000000 слишком большое и поэтому надо разделить на 10000


Спасибо! Я проверю этот запрос чуть позднее.
21 фев 21, 13:24    [22284380]     Ответить | Цитировать Сообщить модератору
 Re: Получить дату+время из поля в формате bigint  [new]
Евгений Стронг
Member

Откуда:
Сообщений: 316
aleks222
Евгений Стронг
Всем привет!

БД на MSSQL 2014. В поле bigint лежит значение вида - 637494192000000000. Как преобразовать это значение в формат datetime?

Пытался так, но результат не совсем соответствуют тому, какое должно быть.

select dateadd(ms, 637493592800000000 / 864000000000 , convert(datetime, getdate()))


Разница примерно на 20 минут больше той, которая должна там лежать.


И чо, завтра там будет лежать ДРУГАЯ дата?
Бред.


Да, это значение (637493592800000000 ) из поля, в котором оно периодически обновляется и вот надо его показывать в "человеческом" виде.
21 фев 21, 13:25    [22284381]     Ответить | Цитировать Сообщить модератору
 Re: Получить дату+время из поля в формате bigint  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8313
Евгений Стронг,

Вы же знаете, каким алгоритмом время превращается в это значение, подумайте, как его превратить в символьную форму.
21 фев 21, 14:00    [22284396]     Ответить | Цитировать Сообщить модератору
 Re: Получить дату+время из поля в формате bigint  [new]
aleks222
Member

Откуда:
Сообщений: 1236
Евгений Стронг
aleks222
пропущено...


И чо, завтра там будет лежать ДРУГАЯ дата?
Бред.


Да, это значение (637493592800000000 ) из поля, в котором оно периодически обновляется и вот надо его показывать в "человеческом" виде.


Сложение с текущей датой должно этому способствовать?
21 фев 21, 19:49    [22284525]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить