当前位置: 代码迷 >> Oracle管理 >> oracle 日期相减仿佛无法得到 number
  详细解决方案

oracle 日期相减仿佛无法得到 number

热度:309   发布时间:2016-04-24 04:08:43.0
oracle 日期相减好像无法得到 number
请教大神,count = 15 的时候可以得到正确值,但是改为两个日期相减后则结果不正确,是什么原因

create table customise4 as 
SELECT 关口点全名,电能量类型,数据 FROM 表底 
WHERE datetime BETWEEN 
to_date('2015/01/06','yyyy/mm/dd') 
AND to_date('2015/01/20','yyyy/mm/dd') and 
(电能量类型='正向有功' or 电能量类型='反向有功') 
GROUP BY 关口点全名,电能量类型,数据 
HAVING COUNT(关口点全名)=(
To_date('2015/01/20 00:00:00' , 'yyyy/mm/dd hh24:mi:ss') - 
To_date('2015/01/06 23:59:59' , 'yyyy/mm/dd hh24:mi:ss')) 


之前用number 15的时候可以工作但是换成日期相减后就不行了

HAVING COUNT(关口点全名)=15

------解决思路----------------------
这两个日期相减不是15,差一秒,是有小数点的数字,与count出来的整数自然是不相等了
2015/01/06 23:59:59这个改为2015/01/07 00:00:00就行了
------解决思路----------------------
 时间相减会精确到秒 , 得出来的数据单位是天 ..    可以把后面的时分秒都省略掉
------解决思路----------------------
可以试试trunc函数  例如 trunc(sysdate)
------解决思路----------------------
你先用select To_date('2015/01/20 00:00:00' , 'yyyy/mm/dd hh24:mi:ss') -  To_date('2015/01/06 23:59:59' , 'yyyy/mm/dd hh24:mi:ss'))  from dual 试下,得到的值不是15,所以要用楼上的解决
------解决思路----------------------
楼主也是做电力行业啊
两个时间相减默认的是天数,但如果时分秒不同,结果是带小数的天数,因此如果你想忽略时分秒,那相减之前就先要trunc,来忽略时分秒的影响。
  相关解决方案