这是出于教育目的,但有人可以解释以下语法在做什么吗?
CAST(INSERT(CHAR(DATE(DB2_RID), USA), 3, 3, '') AS CHAR(10)) AS MONTH
我已经在函数中进行了搜索并了解了大部分功能,但我只是对将2017-12-18-13.21.04.442956的值转换为12/2017的过程感到好奇
DB2_RID的数据类型是一个时间戳。
所以我知道CAST正在将内部值转换为10的字符。我想我的困惑是它如何知道它是一个日期并且不包括诸如12/01/2017这样的月份。 / p>
答案 0 :(得分:1)
DATE(DB2_RID)
=将时间戳转换为日期:2018-12-18
CHAR(..., USA)
=使用美国格式将日期转换为字符串:'12/18/2017'
INSERT(..., 3, 3, '')
=将位置3开始的3个字符替换为
一个空字符串,即删除/18
:'12/2017'
CAST(... AS CHAR(10))
:非常愚蠢,为什么不使用CHAR(7)?: '12/2017 '
我无法测试它,但这似乎是一种复杂的编写方式:
TO_CHAR(DB2_RID, 'MM/YYYY')
答案 1 :(得分:1)
@Dnoeth向您解释您的SQL代码部分。可以用
代替VARCHAR_FORMAT(DB2_RID, 'MM/YYYY')