Преобразование временной метки Epoch на сервер sql (формат для чтения человеком)
У меня есть проблема с преобразованием метки времени Unix в метку времени сервера sql.
У меня есть данные на листе excel, и я буду импортировать эти данные с помощью инструмента. Поэтому я ищу код или синтаксис, который может преобразовать временную метку Epoch в метку времени сервера sql.
У меня есть 3 разных столбца с одинаковым форматом. Как изменить значения в этих столбцах.
Пример:
- Временная отметка эпохи --- 1291388960
- sql server timestamp --- 2010-12-03 15: 09: 20.000
Ответы
Ответ 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