Как преобразовать дату в метку времени в запросе SQL?

1

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

Спасибо

Теги:
database
mysqli

3 ответа

6
Лучший ответ

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

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

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

  • 0
    Большое спасибо, брат.
1

Попробуйте 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.

  • 1
    Большое спасибо, брат.
0

SELECT date_part ('эпоха', CURRENT_TIMESTAMP) :: int

Без CURRENT_TIMESTAMP может быть имя вашего столбца

Ещё вопросы

Сообщество Overcoder
Наверх
Меню