Подтвердить что ты не робот

Преобразование временной метки Epoch на сервер sql (формат для чтения человеком)

У меня есть проблема с преобразованием метки времени Unix в метку времени сервера sql.

У меня есть данные на листе excel, и я буду импортировать эти данные с помощью инструмента. Поэтому я ищу код или синтаксис, который может преобразовать временную метку Epoch в метку времени сервера sql.

У меня есть 3 разных столбца с одинаковым форматом. Как изменить значения в этих столбцах.

Пример:

  • Временная отметка эпохи --- 1291388960
  • sql server timestamp --- 2010-12-03 15: 09: 20.000
4b9b3361

Ответ 1

У меня есть 3 разных столбца с одинаковым форматом. Как изменить значения в этих столбцах.

Чтобы обновить 3 столбца в таблице, вы можете связать DATEADD секунды с эпохой (1 января 1970 года) с именем столбца, то есть

update tbl set
    datetimecol1 = dateadd(s, epochcol1, '19700101'),
    datetimecol2 = dateadd(s, epochcol2, '19700101'),
    datetimecol3 = dateadd(s, epochcol3, '19700101')

Вы не можете обновить его, поскольку столбец bigint также не может быть столбцом datetime. Вы должны обновить их до 3 других столбцов.

Ответ 2

Используйте функцию DATEADD:

SELECT DATEADD(ss, 1291388960, '19700101')

... с указанием даты 1 января 1970 года. В этом примере она была представлена ​​в формате YYYYMMDD.

DATEADD вернет тип данных DATETIME, поэтому, если у вас установлена ​​таблица и столбец, вы можете использовать функцию INSERT/UPDATE в зависимости от ваших потребностей. Предоставьте подробности, и я уточню. Когда у вас есть DATETIME для работы, вы можете использовать CAST или CONVERT для форматирования даты в TSQL.

Ответ 3

я получаю сообщение об ошибке "Ошибка арифметического переполнения при преобразовании выражения в тип данных int", потому что значение больше, чем int