如何在SQL查询中将日期转换为时间戳?

时间:2018-10-27 12:20:42

标签: php mysql sql database mysqli

我正在尝试将数据从 old_table 迁移到 new_table ,但是在旧表中,日期数据类型为 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)

我们将不胜感激任何帮助。

新表创建日期字段接受UNIX时间戳记中的值,例如: 1540642765

谢谢

3 个答案:

答案 0 :(得分:6)

您要查找的功能是UNIX_TIMESTAMP(),例如

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

在UTC时区给出0。

答案 1 :(得分: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时间戳(自   '1970-01-01 00:00:00'UTC)作为无符号整数。如果UNIX_TIMESTAMP()   用日期参数调用,它返回参数的值   以自“ UTC 1970-01-01 00:00:00”以来的秒数表示。日期参数可以是   DATE,DATETIME或TIMESTAMP字符串或YYMMDD中的数字,   YYMMDDHHMMSS,YYYYMMDD或YYYYMMDDHHMMSS格式。服务器   将日期解释为当前时区中的值,并将其转换为   UTC中的内部值。

答案 2 :(得分:0)

SELECT date_part('epoch', CURRENT_TIMESTAMP)::int;