Sql 在DB2中以YYYYMM格式格式化日期
我从下表中以字符串形式获取日期,格式如下:Sql 在DB2中以YYYYMM格式格式化日期,sql,db2,Sql,Db2,我从下表中以字符串形式获取日期,格式如下: 2014-09-02 这是YYYY-MM-DD格式 查询是: SELECT VALUE FROM MYSCHEMA.MYTABLE WHERE CODE = 'MYDATE' 我想修改上述查询,使结果为: 201402 我尝试了这个,但格式不正确: select char(year(date(value))) || char(month(date(value))) from MYSCHEMA.MYTABLE WHERE CODE = 'MYDA
2014-09-02
这是YYYY-MM-DD格式
查询是:
SELECT VALUE FROM MYSCHEMA.MYTABLE WHERE CODE = 'MYDATE'
我想修改上述查询,使结果为:
201402
我尝试了这个,但格式不正确:
select char(year(date(value))) || char(month(date(value))) from MYSCHEMA.MYTABLE WHERE CODE = 'MYDATE'
结果如下:
1
------------
2014 9
我随身携带着DB29.5 如果所有字符串的格式都完全相同,为什么不用REPLACE()删除破折号,然后抓取一个子字符串,如下所示:
SELECT SUBSTR(REPLACE(VALUE,'-',''),1,6) FROM MYSCHEMA.MYTABLE WHERE CODE='MY DATE'
此外,正如Dan所说,在您的示例中,您只选择了年和日,但我从代码中假设您想要年和月。如果所有字符串都将采用完全相同的格式,为什么不使用REPLACE()删除破折号,然后抓取一个子字符串,如下所示:
SELECT SUBSTR(REPLACE(VALUE,'-',''),1,6) FROM MYSCHEMA.MYTABLE WHERE CODE='MY DATE'
此外,正如Dan所说,在您的示例中,您只选择了年和日,但我从您的代码中假设您想要年和月。如果您实际获得了日期数据类型(即使您没有,在ISO格式中,DB2也应该足够聪明,能够自动转换它),然后可以使用标量函数:
SELECT VARCHAR_FORMAT(VALUE, 'YYYYMM')
FROM MYSCHEMA.MYTABLE
WHERE CODE = 'MYDATE'
如果您实际上获得了一个
日期
数据类型(即使不是,在ISO格式中,DB2应该足够聪明,可以自动转换),那么您可以使用标量函数:
SELECT VARCHAR_FORMAT(VALUE, 'YYYYMM')
FROM MYSCHEMA.MYTABLE
WHERE CODE = 'MYDATE'
如果它已经是一个字符串,如果您可以使用
SUBSTR()
,为什么还要麻烦将它转换为DATE
?无论如何,请尝试在两个CHAR()
调用周围添加TRIM()
。您得到的值似乎代表2014年9月2日。你说你想要的那个似乎代表了2014年2月。您确定吗?您还没有选择答案,您找到解决方案了吗?如果它已经是一个字符串,如果您可以使用SUBSTR()
,为什么还要麻烦将其转换为DATE
?无论如何,请尝试在两个CHAR()
调用周围添加TRIM()
。您得到的值似乎代表2014年9月2日。你说你想要的那个似乎代表了2014年2月。你确定吗?你还没有选择答案,你找到解决方案了吗?找到了吗?