我需要在oracle中将sysdate转换为13位数字(Unix时间戳编号)。 请分享这个sql。
示例:1486015200000 日期:02/02/2017
有关数字参考,请在下面的链接中使用1486015200000 http://www.timestampconvert.com/
答案 0 :(得分:1)
unix生成时间戳的方式,它是自1970年1月1日午夜协调世界时(UTC)以来经过的秒数。
你应该可以使用
select (
timestamp '1970-01-01 00:00:00 GMT' + numtodsinterval(1486015200000 /1000, 'SECOND'))
at LOCAL
from dual;
答案 1 :(得分:0)
原则上这很容易:任何约会。减去日期文字date '1970-01-01'
。用括号括起差值乘以86400000。
即:日期差异(在Oracle中)以天为单位。一天有24 * 24 * 60 = 86,400秒和86,400,000毫秒。 13位“unix time”是自UTC时间1970年1月1日午夜起经过的毫秒数。
您链接到的网站上的计算时间为6小时,因此我假设您居住在美国中部时区的某个地方(或者可能位于同一时区的其他地方,北美或中美洲或南美洲) 。网站假定输入在您的时区。在Oracle中,日期是抽象的,它们不是“在时区中”。
select sysdate, (sysdate - date '1970-01-01') * 86400000 as unix_time from dual;
SYSDATE UNIX_TIME
------------------- -------------
03/16/2017 15:17:32 1489677452000
答案 2 :(得分:0)
这应该有效:
SELECT (COLUMN_WITH_ORACLE_DATE_VALUE - TO_DATE('1970-01-01', 'YYYY-MM-DD')) * 86400000 FROM DUAL;
示例:
SELECT (TO_DATE('02/02/2017','MM/DD/YYYY') - TO_DATE('01/01/1970', 'MM/DD/YYYY')) * 86400000 FROM DUAL;