SQL RIGHT函数无法正常工作

时间:2018-11-23 12:41:45

标签: tsql

我正在尝试从日期中提取月份号作为带有0的左填充字符串。

例如,从'2018-01-31'开始,我想要字符串'01'

目前我有这个:

SELECT RIGHT('0' + CAST(MONTH('2018-01-31') AS CHAR(2)), 2)

哪个返回'1',但我希望它返回'01',因为我已经将RIGHT的第二个参数作为2提供了。

有人可以解释为什么这不起作用吗?

2 个答案:

答案 0 :(得分:4)

您需要将CHAR更改为VARCHAR

SELECT RIGHT('0' + CAST(MONTH('2018-01-31') AS VARCHAR(2)), 2)

https://olegkrivtsov.github.io/using-zend-framework-3-book/html/en/Routing/Regex_Route_Type.html

CHAR(2)为空白填充,因此您得到RIGHT('01 ',2)的{​​{1}}。

答案 1 :(得分:0)

当您第一次将字符串转换为DATE类型时,可以改用FORMAT

SELECT FORMAT(CAST('2018-01-31' as DATE),'MM')

至于为什么正确的SQL无效?

尝试使用此SQL并注意不同之处(多余的空间):

SELECT quotename('0' + CAST(1 AS CHAR(2))), quotename('0' + CAST(1 AS VARCHAR(2)))