将 iSeries 日期设置为下个月 1 日后将其转换为字符串
Posted
技术标签:
【中文标题】将 iSeries 日期设置为下个月 1 日后将其转换为字符串【英文标题】:Convert iSeries Date to String after setting it to 1st of next month 【发布时间】:2016-10-26 05:07:46 【问题描述】:在 DB2 SQL 查询中,我返回两个整数:年和月。由此,我需要构造一个 dd/mm/yyyy 格式的字符串。日期必须代表下个月的第一天。
例如 Year = 2016, Month = 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】:试试这个
select VARCHAR_FORMAT(TIMESTAMP_FORMAT(cast(year*10000+month*100+1 as char(8)), 'YYYYMMDD') + 1 month, 'DD/MM/YYYY') as mydate
from yourtable
【讨论】:
以上是关于将 iSeries 日期设置为下个月 1 日后将其转换为字符串的主要内容,如果未能解决你的问题,请参考以下文章