从日期字段开始的mm / yyyy的AS400 SQL查询

时间:2012-07-10 18:59:56

标签: sql select ibm-midrange

出于报告目的,我想将date(digits(mydate7))字段检索为mm/yyyy

我已尝试month(date(digits(mydate7)) + '/' + year (date(digits(mydate7)) as mmyyyy,但获得null作为结果。我可以单独使用month(date(digits(mydate7))和年份函数进行测试,并获得一组返回数据,但不会在字段中合并。

3 个答案:

答案 0 :(得分:3)

DB2 / 400使用双管道字符进行连接:

RTRIM(CHAR(MONTH(DATE(DIGITS(mydate7))))) || '/' || RTRIM(CHAR(YEAR(DATE(DIGITS(mydate7)))))

假设mydate7的格式为yyyyddd,您可以将其简化为:

RTRIM(CHAR(MONTH(DATE(DIGITS(mydate7))))) || '/' || SUBSTR(DIGITS(mydate7),1,4)

使用implicit casting进一步简化:

RTRIM(MONTH(DIGITS(mydate7))) || '/' || RTRIM(mydate7/1000)

有关详细信息,请参阅concatenation operator

答案 1 :(得分:1)

Looks like CONCAT是字符串连接函数,而不是+。它可能试图添加一个带字符串和barfing的数字。

尝试CONCAT(CONCAT(month(date(digits(mydate7)),'/'), year(date(digits(mydate7)))

答案 2 :(得分:0)

通常我喜欢这个

substr(char(mydate7,ISO),6,2) || '/' || substr(char(mydate7,ISO),1,4)