SQL语法说明(CAST,INSERT,DATE)

时间:2018-12-12 18:34:53

标签: sql db2

这是出于教育目的,但有人可以解释以下语法在做什么吗?

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>

2 个答案:

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