【问题标题】:Epoch date in the form 'YYYY-MM-DD"T"HH24:MI:SS"Z"'纪元日期,格式为 'YYYY-MM-DD"T"HH24:MI:SS"Z"'
【发布时间】:2016-04-06 07:44:54
【问题描述】:

我是 SQL 新手,遇到了问题。我想以上述格式获得纪元日期,即 1970-01-01T00:00:00Z。

出于编程原因,我不能将其用作常量(即“1970-01-01T00:00:00Z”)。我需要一个将其作为输出的语句。我用过这个:

select to_char(TRUNC(add_months(sysdate,-555),'MM'), 'YYYY-MM-DD"T"HH24:MI:SS"Z"') from dual;

但是这个声明的唯一问题是它不会给我下个月想要的日期,即它是特定月份的,它只适用于 2016 年 4 月。但我需要一个始终保持 1970-01-01T00 的日期: 00:00Z。

提前感谢您的帮助。

PS:我正在使用 Oracle SQL Developer(如果重要的话)。

【问题讨论】:

标签: sql oracle datetime


【解决方案1】:

你可以这样做:

select '1970-01-01T00:00:00Z' from dual;

或者如果您出于某种原因想要对其进行处理,这似乎是毫无意义的开销:

select to_char(date '1970-01-01', 'YYYY-MM-DD"T"HH24:MI:SS"Z"') from dual;

两者都会给你你想要的字符串。但它是一个字符串,不是一个日期。如果您希望它作为正确的数据类型(我不认为您这样做,但也许这是为了比较),它需要是带有时区的时间戳,您可以使用:

select timestamp '1970-01-01 00:00:00 UTC' from dual;

【讨论】:

    【解决方案2】:

    嗯,这可能不是最优雅的方式,但它是一种可行的方式:

    select regexp_substr('1970-01-01T00:00:00Z','^....................',1,1) from dual;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-06
      • 1970-01-01
      • 2014-04-15
      • 1970-01-01
      • 2022-07-19
      • 2016-01-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多