Я пытаюсь перенести данные из old_table в new_table, но в старой таблице типом данных date является datetime, а в новой таблице типом данных date является int, и он принимает значение метки времени.
Так как же преобразовать старую дату в sql запрос, чтобы она вставлялась в новую таблицу как метка времени?
INSERT INTO 'new_table' ('id', 'user_id', 'doctor_id', 'message_id', 'type', 'is_message', 'is_note', 'doctor_initials', 'call_status', 'message', 'date_created', 'date_updated', 'day')
SELECT id, usid, drid, message_id, type, is_message, is_note, doctor, kall, message, datein, 123, ziua
FROM 'old_table';
Я хочу функцию, которая преобразует старую дату в значение в метку времени, например, в приведенном выше запросе CONVERT_INTO_TIMESTAMP (datein)
Любая помощь будет высоко оценена.
Новое поле Date_created таблицы принимает значения в метке времени Unix, такие как: 1540642765
Спасибо
Функция, которую вы ищете - UNIX_TIMESTAMP()
, например
select UNIX_TIMESTAMP('1970-01-01 00:00:00');
дает 0 в часовом поясе UTC.
Попробуйте UNIX_TIMESTAMP()
:
INSERT INTO 'new_table'
('id',
'user_id',
'doctor_id',
'message_id',
'type',
'is_message',
'is_note',
'doctor_initials',
'call_status',
'message',
'date_created',
'date_updated',
'day')
SELECT id,
usid,
drid,
message_id,
type,
is_message,
is_note,
doctor,
kall,
message,
Unix_timestamp(datein),
'123',
ziua
FROM 'old_table';
Из Документов:
Если вызывается без аргумента, возвращает метку времени Unix (секунды с UTC 1970-01-01 00:00:00) в виде целого числа без знака. Если UNIX_TIMESTAMP() вызывается с аргументом даты, он возвращает значение аргумента в секундах с UTC 1970-01-01 00:00:00. Аргументом date может быть строка DATE, DATETIME или TIMESTAMP или число в формате YYMMDD, YYMMDDHHMMSS, YYYYMMDD или YYYYMMDDHHMMSS. Сервер интерпретирует дату как значение в текущем часовом поясе и преобразует ее во внутреннее значение в UTC.
SELECT date_part ('эпоха', CURRENT_TIMESTAMP) :: int
Без CURRENT_TIMESTAMP может быть имя вашего столбца