我只是将默认时间戳格式设置为
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.
如果有人可以帮助我,我将不胜感激.
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标记.
| 归档时间: |
|
| 查看次数: |
19754 次 |
| 最近记录: |