将iSeries Date设置为下个月1日后将其转换为String

时间:2016-10-26 05:07:47

标签: sql date db2

在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
但是看起来很恐怖。有没有更好的方法来实现这个结果?

由于

朗文图拉

1 个答案:

答案 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