Sql 将Oracle日期转换为Unix样式的时间(自1906年以来的秒数?)

Sql 将Oracle日期转换为Unix样式的时间(自1906年以来的秒数?),sql,oracle,unix-timestamp,Sql,Oracle,Unix Timestamp,我需要将Oracle日期值转换为Unix风格的自历元开始的秒数值 我尝试过Oracle各种转换组合,例如: select to_number(to_date('10/05/2019','mm/dd/yyyy')) from dual; select to_number(to_timestamp(to_date('10/05/2019','mm/dd/yyyy'))) from dual; select to_number(to_char(to_date('10/05/2019','mm/dd/

我需要将Oracle日期值转换为Unix风格的自历元开始的秒数值

我尝试过Oracle各种转换组合,例如:

select to_number(to_date('10/05/2019','mm/dd/yyyy')) from dual;
select to_number(to_timestamp(to_date('10/05/2019','mm/dd/yyyy')))  from dual;
select to_number(to_char(to_date('10/05/2019','mm/dd/yyyy'))) from dual;

似乎什么都不管用。有人对此有答案吗?

如果这是1906年1月1日以来的秒数,那么:

SQL> select sysdate - date '1906-01-01' days,
  2        (sysdate - date '1906-01-01') * 24 * 60 * 60 unix_style
  3  from dual;

      DAYS UNIX_STYLE
---------- ----------
 41555,811 3590422068

SQL>
为什么??因为-在Oracle中减去两个日期,结果是天数。然后你必须把它乘以24(一天有24小时),乘以60(一小时有60分钟),再乘以60(一分钟有60秒)

当然,你可以把它乘以86400(24*60*60),但前者很难理解,而后者显示了发生了什么以及为什么


如果-正如Wernfried评论的那样-日期与您所说的不同,您只需将日期“1906-01-01”替换为日期“1970-01-01”,

通常Unix时间是从1970-01-01 00:00:00 UTC开始的秒-您确定大约1906年吗?通常Unix时间,除了从1970年1月1日开始测量外,是带时区的时间戳。将其应用于oracle日期值没有多大意义,因为它没有时区信息。谢谢,这正是我所需要的。