0
我有一个具有timestamp属性的实体类。在使用oracle的休眠时间戳语言环境
如果我在oracle中保存一个实体实例,相应的时间戳列将被写入中文格式(我正在使用中文区域设置的oracle 10g)。
22-8月 -11 07.04.03.926000 下午
保存
但我想2011-08-22 19:04:03.926
如何更改列定义或数据库区域设置?
我有一个具有timestamp属性的实体类。在使用oracle的休眠时间戳语言环境
如果我在oracle中保存一个实体实例,相应的时间戳列将被写入中文格式(我正在使用中文区域设置的oracle 10g)。
22-8月 -11 07.04.03.926000 下午
保存
但我想2011-08-22 19:04:03.926
如何更改列定义或数据库区域设置?
Oracle中的时间戳是一个时间点。因此,没有格式与数据一起存储。当您从时间戳列检索数据时,默认情况下会按照您的NLS_TIMESTAMP_FORMAT或NLS_TIMESTAMP_TZ_FORMAT会话变量指定的格式显示它。
你总是可以使用特定的格式与to_char
:
SQL> SELECT to_char(systimestamp, 'yyyy-mm-dd hh24:mi:ss.ff3') my_ts FROM dual;
MY_TS
-----------------------------
2011-08-22 14:38:48.351
你也可以设置新的默认为会话有:
SQL> ALTER SESSION SET NLS_TIMESTAMP_TZ_FORMAT='yyyy-mm-dd hh24:mi:ss.ff3';
Session altered
SQL> select systimestamp from dual;
SYSTIMESTAMP
-------------------------------------------------
2011-08-22 14:42:23.776
感谢。但NLS_TIMESTAMP_FORMAT仅适用于当前会话。我如何将它强加到每个会话中休眠? – xiaohan2012
这是客户端设置,我不知道是否可以在客户端的配置文件中设置这些变量。但是,您可以在每个会话开始时执行语句,甚至可以[使用登录触发器](http://stackoverflow.com/questions/447608/how-to-change-default-nls-date-format-for-oracle -jdbc的客户/ 447965#447965)。 –
谢谢,这是一个好点! – xiaohan2012