Oracle默认的Timestamp格式

时间:2014-08-11 14:20:41

标签: sql oracle

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

ALTER SESSION SET  NLS_TIMESTAMP_FORMAT = 'YYYY-MM-DD HH:MI:SS.FF'

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

0014-08-11 04:45:24.000000000

当我查询

SELECT SYSTIMESTAMP FROM DUAL

我明白了:

11-AUG-14 06.14.58.400000000 PM +04:00

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

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

2 个答案:

答案 0 :(得分:8)

SYSTIMESTAMP返回数据类型TIMESTAMP WITH TIMEZONE。因此,您需要将其转换为普通TIMESTAMP

SELECT CAST(SYSTIMESTAMP AS TIMESTAMP) FROM DUAL;

CAST(SYSTIMESTAMPASTIMESTAMP)
-----------------------------
2014-08-11 15:27:11.091862000 

或者设置单独的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                

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

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

由于您不再拥有AM / PM标记,因此您也应该使用HH24

答案 1 :(得分:0)

在Oracle DB中转换TIMESTAMP格式

通过在init.ora文件中设置 nls_timestamp_format ='YYYY-MM-DD HH24:MI:SS.FF6'; 并重新启动实例。