如何从SQL查询中获取特定时间戳

时间:2012-04-19 12:59:15

标签: sql oracle timestamp nvl

我有一个表格,其中时间戳以varchar格式存储为20120419170525。该列还有一些空值。

SELECT查询中,我想应用NVL(my_timestamp, to_timestamp(SYSDATE)),如果值为null,则它应以相同格式显示当前时间戳。

我在执行查询sql语句之前尝试了这个语句:

alter session set nls_date_format = 'YYYYMMDDHH24MISS'.

但没有得到理想的结果。我的格式为YYYY MM DD HH24:MI:SS

什么是解决方案,或者我需要编写一个程序来支持这种格式?

2 个答案:

答案 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一样设置此项。