我有一个表格,其中时间戳以varchar
格式存储为20120419170525
。该列还有一些空值。
在SELECT
查询中,我想应用NVL(my_timestamp, to_timestamp(SYSDATE))
,如果值为null,则它应以相同格式显示当前时间戳。
我在执行查询sql语句之前尝试了这个语句:
alter session set nls_date_format = 'YYYYMMDDHH24MISS'.
但没有得到理想的结果。我的格式为YYYY MM DD HH24:MI:SS
什么是解决方案,或者我需要编写一个程序来支持这种格式?
答案 0 :(得分:3)
你可以这样做:
select nvl(my_timestamp, to_char(systimestamp, 'yyyymmddhh24miss'))
from your_table
但是既然你没有真正使用“时间戳部分”,你可以继续使用sysdate:
select nvl(my_timestamp, to_char(sysdate, 'yyyymmddhh24miss'))
from your_table
答案 1 :(得分:0)
时间戳有一个单独的格式。它是NLS_TIMESTAMP_FORMAT
。您可以像设置会话的NLS_DATE_FORMAT
一样设置此项。