我只是将默认时间戳格式设置为
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。
如果有人可以帮助我,我将不胜感激。
答案 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'; 并重新启动实例。