我是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(如果重要的话)。
答案 0 :(得分:2)
你可以这样做:
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;
答案 1 :(得分:0)
这可能不是最优雅的方式,但它是一种可行的方式:
select regexp_substr('1970-01-01T00:00:00Z','^....................',1,1) from dual;