在DB2 SQL查询中,我返回两个整数:year和month。由此,我需要构造一个格式为dd / mm / yyyy的字符串。日期必须代表NEXT月的第一天。
所以举个例子 年= 2016年,月= 9将产生字符串" 01/10 / 2016"
目前我使用以下(我继承)来执行此操作:
substring(cast(DATE(INSERT(INSERT(LEFT(CHAR((Year * 10000) + (Month * 100) + 1),8),5,0,''-''),8,0,''-'')) + 1 month as char(10)),9,2)|| ''/'' ||
substring(cast(DATE(INSERT(INSERT(LEFT(CHAR((Year * 10000) + (Month * 100) + 1),8),5,0,''-''),8,0,''-'')) + 1 month as char(10)),6,2)|| ''/''||
substring(cast(DATE(INSERT(INSERT(LEFT(CHAR((Year * 10000) + (Month * 100) + 1),8),5,0,''-''),8,0,''-'')) + 1 month as char(10)),1,4) as UPDATEDATE
但是看起来很恐怖。有没有更好的方法来实现这个结果?
由于
朗文图拉答案 0 :(得分:1)
试试这个
select VARCHAR_FORMAT(TIMESTAMP_FORMAT(cast(year*10000+month*100+1 as char(8)), 'YYYYMMDD') + 1 month, 'DD/MM/YYYY') as mydate
from yourtable