如何在Oracle中为时间戳值添加月份?在我的查询中,它转换为日期值而不是:
SELECT add_months(current_timestamp,2) FROM dual;
实际输出是:
ADD_MONTH 11-MAR-13
预期的输出是:
2013-01-01 00:00:00.000000000+00:00
解决方法
这将为您提供TIMESTAMP数据类型的日期和时间:
select TO_TIMESTAMP(TO_CHAR(ADD_MONTHS(SYSDATE,2),'YYYYMMDD HH24:MI'),'YYYYMMDD HH24:MI') from dual;
如果您需要比上述更高或更低的精度(E.G.舍入),请调整日期格式(两者都需要采用相同的格式).例如,这将返回2个月到秒的精度级别:
select TO_TIMESTAMP(TO_CHAR(ADD_MONTHS(SYSTIMESTAMP,'YYYYMMDD HH24:MI:SS'),'YYYYMMDD HH24:MI:SS') from dual;
这是我能得到的最接近你需要的格式(作为一个角色):
select TO_CHAR( TO_TIMESTAMP(TO_CHAR(ADD_MONTHS(SYSTIMESTAMP,'YYYY-MM-DD HH24:MI:SS'),'YYYY-MM-DD HH24:MI:SS.FF TZR') from dual;