Oracle默认的Timestamp格式

Bib*_*ias 5 sql oracle

我只是将默认时间戳格式设置为

ALTER SESSION SET  NLS_TIMESTAMP_FORMAT = 'YYYY-MM-DD HH:MI:SS.FF'
Run Code Online (Sandbox Code Playgroud)

当我将数据插入表中时插入的时间戳为,

0014-08-11 04:45:24.000000000
Run Code Online (Sandbox Code Playgroud)

当我查询

SELECT SYSTIMESTAMP FROM DUAL
Run Code Online (Sandbox Code Playgroud)

我明白了:

11-AUG-14 06.14.58.400000000 PM +04:00
Run Code Online (Sandbox Code Playgroud)

但我希望默认时间戳为2014-07-22 05:54:18.000000000.

如果有人可以帮助我,我将不胜感激.

Ale*_*ole 8

SYSTIMESTAMP返回数据类型TIMESTAMP WITH TIMEZONE.所以你要么把它投射到平原上TIMESTAMP:

SELECT CAST(SYSTIMESTAMP AS TIMESTAMP) FROM DUAL;

CAST(SYSTIMESTAMPASTIMESTAMP)
-----------------------------
2014-08-11 15:27:11.091862000 
Run Code Online (Sandbox Code Playgroud)

或者设置单独的NLS_TIMESTAMP_TZ_FORMAT参数:

ALTER SESSION SET NLS_TIMESTAMP_TZ_FORMAT = 'YYYY-MM-DD HH24:MI:SS.FF';

SELECT SYSTIMESTAMP FROM DUAL;

SYSTIMESTAMP         
----------------------
2014-08-11 15:27:11.35 
1526000                
Run Code Online (Sandbox Code Playgroud)

无论哪种方式,您都会丢失时区信息,这些信息对您来说可能或不重要.

但这与从表中的TIMESTAMP(无时区)列查询值无关.表中的值没有偶然的格式; 插入时的NLS设置不会影响查询时的存储方式或显示方式.您需要指定在查询时是在插入时的格式,以及-和最好使用显式格式机型TO_TIMESTAMP()TO_CHAR(),而不是回答关于NLS设置,您可能无法控制.

您也应该使用,HH24因为您不再拥有AM/PM标记.