oracle 只根据年份(如2011)查询每月统计数据

2024-12-04 09:41:17
推荐回答(4个)
回答1:

不知道你的时间和参数time分别是什么类型的,只能暂时考虑为vchar型的。
select
to_char(时间,'yyyy-mm') as 每月时间
, sum(统计数据)
from 测试表
where substr(to_char(to_date('2011/7','YYYY/MM'),'YYYY/MM/DD'),0,4) = substr(to_char(to_timestamp('2011/7/1 18:42:43','YYYY/MM/DD hh24:mi:ss'),'YYYY/MM/DD hh24:mi:ss'),0,4)
group by to_char(时间,'yyyy-mm')
-----下面的这个假设时间是date型的,参数time是timestamp型
select
to_char(时间,'yyyy-mm') as 每月时间
, sum(统计数据)
from 测试表
where substr(to_char(时间,'yyyy-mm'),0,4) = substr(to_char(time,'YYYY/MM/DD hh24:mi:ss'),0,4)
group by to_char(时间,'yyyy-mm')

回答2:

select to_char(时间,'yyyy-mm') as 每月时间, sum(统计数据) from 测试表 where to_char(时间),'YYYY-MM-DD')like '2011%' group by to_char(时间,'yyyy-mm')

回答3:

select to_char(时间,'yyyy-mm') as 每月时间, sum(统计数据) from 测试表
where to_char(时间,'YYYY')= to_char(time,'YYYY') group by 每月时间

回答4:

where TRUNC( 时间, 'YYYY' ) = TRUNC( time , 'YYYY' )