在使用PL/SQL Developer查询数据表时,表中字段类型为timestamp的列,显示的内容类似于“15-5月 -18 10.40.00.380000 上午”,调用to_char函数显示的结果为:“2018-05-18 15:20:00.110000”。对于DBA来说,后一种显示内容更友好些。
对带有timestamp列的表进行查询,如果说每次都转换为char来显示,那么这个操作效率有点低下。可不可以设置参数来控制格式显示呢,答案是可以的。
方式一:
执行:alter session set nls_timestamp_format='yyyy-mm-dd hh24:mi:ss.ff6';
方式二:
在Windows操作系统的系统环境变量中添加变量名:nls_timestamp_format,变量值:yyyy-mm-dd hh24:mi:ss.ff6 然后重启PL/SQL Developer.
重新执行查询,timestamp列中内容显示为“2018-05-18 15:20:00.110000”这样的格式。
需要说明的是ff6表示6位毫秒,一般情况下毫秒位数是3位。所以终极版本格式为:yyyy-mm-dd hh24:mi:ss.ff3
另外由于windows对于大小写是不敏感的 ,所以nls_timestamp_format也可以用大写的变量名NLS_TIMESTAMP_FORMAT
同时执行方式一和方式二时,方式一中session有优先级高于环境变量。举个例子,环境变量中设置格式为:yyyy-mm-dd hh24:mi:ss.ff3,但在程序中执行alter session set nls_timestamp_format='yyyy-mm-dd hh24:mi:ss.ff5'; 那么最终显示的内容是带有5位毫秒的时间”2018-05-18 15:20:00.11000“。