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

osh3o9ms  于 2021-06-18  发布在  Mysql
关注(0)|答案(3)|浏览(2949)

我正在尝试将数据从旧表迁移到新表,但在旧表中,日期数据类型是datetime,而在新表中,日期数据类型是int,并且接受timestamp值。
那么,如何转换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)
任何帮助都将不胜感激。
new table date\u created字段接受unix时间戳中的值,例如:1540642765
谢谢

kiayqfof

kiayqfof1#

尝试 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\u timestamp(),它将以秒的形式返回自“1970-01-01 00:00:00”utc以来的参数值。日期参数可以是日期、日期时间或时间戳字符串,也可以是yymmdd、yymmddhhmmss、yyyymmdd或yyyymmddhhmmss格式的数字。服务器将日期解释为当前时区中的值,并将其转换为utc的内部值。

aamkag61

aamkag612#

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

nzrxty8p3#

你要找的功能是 UNIX_TIMESTAMP() ,例如。

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

给出utc时区中的0。

相关问题