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



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

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

DateTime2
Date range 0001-01-01 through 9999-12-31
January 1,1 CE through December 31, 9999 CE
...
Рейтинг: 0 / 0
Конвертировать количество секунд в DateTime2
    #39838421
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
Конвертировать количество секунд в DateTime2
    #39838564
Pvase
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гавриленко Сергей Алексеевич
Спасибо, вот что получилось одной строкой:
Код: 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
Конвертировать количество секунд в DateTime2
    #39838662
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pvase,

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


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