我正在尝试将数据从 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
谢谢
答案 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;