我有简单的计算,我从日期减去间隔用时:与格式甲骨文TO_DATE不显示时间
select TO_DATE('2016-12-05 23:04:59', 'YYYY-MM-DD HH24:MI:SS') - to_dsinterval('00 0:05:00') from dual;
它工作正常,结果:2016年12月5日22点59分59秒
但它无法与时区正确工作,所以下一种方法解决了时区问题。我只是包装用TO_DATE()一次
select TO_DATE(
TO_DATE('2016-12-05 23:04:59', 'YYYY-MM-DD HH24:MI:SS') - to_dsinterval('00 0:05:00')) from dual;
表达,但现在事实证明时间为零。结果应该是:2016年12月5日22时59分五十九秒但实际:2016年12月5日00:00:00
如果我添加格式外TO_DATE就象这样:
select to_date(TO_DATE('2016-12-05 23:04:59', 'YYYY-MM-DD HH24:MI:SS') - to_dsinterval('00 0:05:00'), 'YYYY-MM-DD HH24:MI:SS') from dual;
结果变得很奇怪:0005-12-16 00:00:00 我在做什么错了?
减法的结果已经是日期。你不需要另一个'to_date()',这不能解决时区问题。如果你想在时区上进行一些操作,请使用'时区时间戳' – Kacper