【问题标题】:Oracle SQL - Column with unix timestamp, need dd-mm-yyyy timestampOracle SQL - 具有 unix 时间戳的列,需要 dd-mm-yyyy 时间戳
【发布时间】:2020-12-31 01:08:22
【问题描述】:

Oracle 中是否有任何方法可以从 oracle 中的 unix 时间戳中仅获取 dd-mm-yyyy 部分?

喜欢:

select to_char(my_timestamp, 'ddmmyyyy') as my_new_timestamp from table

【问题讨论】:

    标签: sql oracle


    【解决方案1】:

    鉴于这些数据...

    SQL> alter session set nls_date_format='dd-mon-yyyy hh24:mi:ss'
      2  /
    
    Session altered.
    
    SQL> select * from t23
      2  /
    
    MY_TIMESTAMP
    --------------------
    08-mar-2010 13:06:02
    08-mar-2010 13:06:08
    13-mar-1985 13:06:26
    
    SQL> 
    

    .. 只需将the time elapsed since 01-JAN-1970 转换为秒:

    SQL> select my_timestamp
      2        , (my_timestamp - date '1970-01-01') * 86400 as unix_ts
      3  from t23
      4  /
    
    MY_TIMESTAMP            UNIX_TS
    -------------------- ----------
    08-mar-2010 13:06:02 1268053562
    08-mar-2010 13:06:08 1268053568
    13-mar-1985 13:06:26  479567186
    
    SQL>
    

    【讨论】:

      【解决方案2】:

      据我了解,Unix 时间戳定义为自 1970-01-01 以来的秒数,在这种情况下:

      select DATE '1970-01-01' + my_timestamp/86400 from table;
      

      (一天有86400秒。)

      忽略小时、分钟和秒:

      select TRUNC(DATE '1970-01-01' + my_timestamp/86400) from table;
      

      但是,如果你想要的是一个“截断”的 Unix 时间戳,那么试试这个:

      select floor(my_timestamp/84600)*84600 from dual;
      

      【讨论】:

      • 我的问题是:在此之后它需要一个 unix 时间戳而不是 oracle 日期;)
      【解决方案3】:

      我相信是:

      select to_char(my_timestamp, 'dd-mm-yyyy') as my_new_timestamp from table
      

      另请参阅this reference,了解 Oracle 的日期格式说明符。

      【讨论】:

        【解决方案4】:

        Unix 时间戳是自 1970 年 1 月 1 日以来的秒数。(UTC)。

        要获取现在的 Unix 时间戳,请尝试以下 sql:

        select (CAST(SYS_EXTRACT_UTC(current_timestamp) AS date) - to_date('1970-01-01', 'YYYY-MM-DD')) * 86400 FROM dual;
        

        您可以将current_timestamp 替换为任何时间戳值。

        顺便说一句,自 1970 年 1 月 1 日以来,一些答案似乎返回了本地时区的秒数。错了。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-08-03
          • 1970-01-01
          • 1970-01-01
          • 2013-08-16
          • 2018-10-05
          • 2023-03-26
          • 2021-11-27
          • 1970-01-01
          相关资源
          最近更新 更多