Как преобразовать дату в метку времени в запросе SQL? - PullRequest
0 голосов
/ 27 октября 2018

Я пытаюсь перенести данные из 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

Спасибо

Ответы [ 3 ]

0 голосов
/ 27 октября 2018

Попробуйте 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 (секунд с '1970-01-01 00:00:00' UTC) как целое число без знака. Если UNIX_TIMESTAMP () вызывается с аргументом даты, возвращает значение аргумента в секундах с «1970-01-01 00:00:00» UTC. Аргумент даты может быть Строка DATE, DATETIME или TIMESTAMP или число в YYMMDD, ГГММДДЧЧММСС, ГГГГММДД или ГГГГММДДЧЧММСС. Сервер интерпретирует дату как значение в текущем часовом поясе и преобразует ее в внутреннее значение в UTC.

0 голосов
/ 30 июня 2019
SELECT date_part('epoch', CURRENT_TIMESTAMP)::int;
0 голосов
/ 27 октября 2018

Функция, которую вы ищете: UNIX_TIMESTAMP(), например,

select UNIX_TIMESTAMP('1970-01-01 00:00:00');

дает 0 в часовом поясе UTC.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...