注意:我对该数据库只有读权限。
我需要将 Oracle 9 日期类型从 d/mm/yyyy hh:mm:ss 格式转换为 iso8601 标准。像下面的例子:
4/22/2015 12:02:56 AM => 2015-04-22T04:02:56.000Z
下面是一个将 Oracle 日期类型转换为 iso8601 格式字符串的查询。我需要一个 is8601 格式的日期。
SELECT sysdate,
to_char((from_tz(to_timestamp(to_char(sysdate, 'YYYY-MM-DD HH:MI:SS PM'), 'YYYY-MM-DD HH:MI:SS PM') ,'America/New_York') at time zone 'UTC'),'YYYY-MM-DD"T"HH24:MI:SS.ff3"Z"') "iso8601"
FROM dual
Run Code Online (Sandbox Code Playgroud)
感谢您的任何帮助。
编辑:最终目标是获取这些日期并将它们作为日期时间插入到支持 rails 应用程序的 postgres 数据库中。
您应该使用SYSTIMESTAMP
而不是SYSDATE
, 以获得小数秒(正如我所假设的那样)。
SYSTIMESTAMP
返回数据类型TIMESTAMP WITH TIME ZONE
,因此您不必明确指定。
所以它是:
SELECT
TO_CHAR(
SYSTIMESTAMP AT TIME ZONE 'UTC',
'yyyy-mm-dd"T"hh24:mi:ss.ff3"Z"'
)
FROM dual
Run Code Online (Sandbox Code Playgroud)
SQL> alter session set nls_timestamp_format = 'YYYY-MM-DD"T"HH24:MI:SS.ff3"Z"';
Session altered.
SQL> select cast (sysdate as timestamp) from dual;
CAST(SYSDATEASTIMESTAMP)
---------------------------------------------------------------------------
2015-07-18T01:26:09.000Z
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
44149 次 |
最近记录: |