请教大神,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,来忽略时分秒的影响。