DB2动态实现时间类型加减
需求分析
根据时间类型动态展示数据,例如作图表展示中x轴时间等。
具体实现
db2 sql
select
t4.SERIES,
t7.TARGET_NAME,
max(t4.DATATIME) DATATIME,
SUBSTRING((VALUES TIMESTAMP(max(t4.DATATIME)||'-01 01:01:01')-11 MONTH),1,7) STARTDATATIME
from schema1.table4 t4
left join schema1.table7 t7 on t4.SERIES=t7.TARGET_ID
where t4.TYPE='tar0003' and t4.STATUS='1'
group by t4.SERIES,t7.TARGET_NAME
结果
max(t4.DATATIME):数据表最大月份
SUBSTRING((VALUES TIMESTAMP(max(t4.DATATIME)||‘-01 01:01:01’)-11 MONTH),1,7) STARTDATATIME:最大时间减去固定月份后的开始月份
sql分析
由于TIMESTAMP()方法返回时间戳类型,所以必需将max(t4.DATATIME)通过||连接符拼成时间戳类型的时间;而我需要yyyy-MM类型,最后通过SUBSTRING()函数截取就行了。
注:本人t4表里DATATIME本身就是VARCHAR类型
如果有更好的方法欢迎留言!