Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Конвертировать количество секунд в DateTime2 / 7 сообщений из 7, страница 1 из 1
17.07.2019, 17:25
    #39838410
Pvase
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертировать количество секунд в DateTime2
Есть количество секунд начиная от даты 00010101 00:00:01, например "63684865306" секунд, как можно имея этот параметр получить дату+время? SQL 2017. Спасибо.
...
Рейтинг: 0 / 0
17.07.2019, 17:27
    #39838411
Pvase
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертировать количество секунд в DateTime2
Пробовал так:
Код: sql
1.
SELECT DATEadd(second,63684865306,DATETIME2FROMPARTS ( 1, 1, 1, 0, 0, 0, 0, 1 ))



Но получил в ответ ошибку: Ошибка арифметического переполнения при преобразовании expression к типу данных int.
...
Рейтинг: 0 / 0
17.07.2019, 17:38
    #39838419
vikkiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертировать количество секунд в DateTime2
Pvase,

Код: sql
1.
select dateadd(second,75,cast('0001-01-01'as datetime2)) as d
...
Рейтинг: 0 / 0
17.07.2019, 17:39
    #39838420
vikkiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертировать количество секунд в DateTime2
vikkiv,

DateTime2
Date range 0001-01-01 through 9999-12-31
January 1,1 CE through December 31, 9999 CE
...
Рейтинг: 0 / 0
17.07.2019, 17:39
    #39838421
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертировать количество секунд в DateTime2
Код: sql
1.
SELECT DATEadd(dd,63684865306/60/60/24,DATETIME2FROMPARTS ( 1, 1, 1, 0, 0, 0, 0, 1 ))


Ну и надо еще прибавить к результату (63684865306 - 63684865306/60/60/24) секунд.

UPD:

Как-то так:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
declare
    @seconds    bigint  = 63684865306
declare
    @days       int     = @seconds / 60 / 60 / 24
declare
    @remainder  int     = @seconds - cast(@days as bigint) * 60 * 60 * 24


select @seconds, @days, @remainder
SELECT dateadd(second, @remainder, DATEadd(dd,@days,DATETIME2FROMPARTS ( 1, 1, 1, 0, 0, 0, 0, 1 )))
...
Рейтинг: 0 / 0
18.07.2019, 08:56
    #39838564
Pvase
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертировать количество секунд в DateTime2
Гавриленко Сергей Алексеевич
Спасибо, вот что получилось одной строкой:
Код: sql
1.
SELECT dateadd(second, 63684865306 - cast(63684865306 / 60 / 60 / 24 as bigint) * 60 * 60 * 24, DATEadd(dd,63684865306 / 60 / 60 / 24,DATETIME2FROMPARTS ( 1, 1, 1, 0, 0, 0, 0, 1 )))
...
Рейтинг: 0 / 0
18.07.2019, 11:29
    #39838662
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Конвертировать количество секунд в DateTime2
Pvase,

рассчитайте константой количество секунд от даты 00010101 00:00:01 до 01-01-1900, например, и возьмите точку отсчета 01-01-1900. Выражение упростится.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Конвертировать количество секунд в DateTime2 / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]