Unix 时间戳转换在 mysql 和 oracle 中给出两个不同的结果
select FROM_UNIXTIME(1387444958) from dual;
输出:2013-12-19 10:22:38
select to_char(to_date('01/01/1970 00:00:00','DD/MM/YYYY HH24:MI:SS')+ (1387444958/86400),'YYYY-MM-DD HH24:MI:SS')from dual;
输出:2013-12-19 09:22:38
任何人都可以帮助我从 Oracle 获得与我在 MySql 中获得相同的时间戳。
最佳答案
Unix 时间戳是从 1970-01-01 00:00:00 UTC
开始的秒数,实际上是您本地时区的 1970-01-01 01:00:00
(或您的 MySQL 服务器所在的时区)。看起来 FROM_UNIXTIME
考虑到了这一点。
对于 Oracle 你可以使用这个函数:
FUNCTION UnixTime2Timestamp(UnixTime IN NUMBER) RETURN TIMESTAMP IS
BEGIN
RETURN (TIMESTAMP '1970-01-01 00:00:00 UTC' + UnixTime * INTERVAL '1' SECOND) AT LOCAL;
END UnixTime2Timestamp;
我假设如果您想在 MySQL 中获取 UTC 时间,那么您必须运行
select
CONVERT_TZ(FROM_UNIXTIME(1387444958),'{your local timezone}','UTC')
from dual;
关于mysql - Unix时间戳转换在Mysql和Oracle中是不同的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55719557/