尝试输出类似的内容:
2016,11
使用此:
SELECT
CONVERT(VARCHAR(20),YEAR(GETDATE()) + ',' + MONTH(GETDATE())) AS YearMonth
我错过了转换中的内容吗?因为我收到了这个错误:
转换varchar值时转换失败''到数据类型 中间体
由于
答案 0 :(得分:1)
试试这个。
SELECT
CONVERT(VARCHAR(20),YEAR(GETDATE())) + ',' + CONVERT(VARCHAR(20), MONTH(GETDATE())) AS YearMonth
答案 1 :(得分:0)
您缺少将MONTH()
的输出转换为字符串。这是一种方法:
select datename(year, getdate()) + ',' + cast(month(getdate()) as varchar(255)) as YearMonth
datename()
很方便,因为它返回一个字符串。不幸的是,月份它会返回月份的名称,而不是数字。
你也可以这样做:
select replace(convert(varchar(7), getdate(), 120), '-', ',')
或者在SQL Server 2012 +中使用format()
:
select format(getdate(), 'yyyy,MM')
答案 2 :(得分:0)
您可以使用CONVERT
和112来获得没有分隔符的字符串(“20161110”)。将此转换为VARCHAR(*6*)
将隐含减少一天。一个(在大多数情况下是积极的)副作用:您将获得一个低月填充(例如 2016,04 )。然后我使用STUFF
插入,
:
SELECT STUFF(CONVERT(VARCHAR(6),GETDATE(),112),5,0,',')
如果您不喜欢零填充月份,则可以替换0
中的STUFF
,如下所示:
DECLARE @d DATETIME={d'2016-04-05'};
SELECT STUFF(CONVERT(VARCHAR(6),@d,112),5,CASE WHEN MONTH(@d)<10 THEN 1 ELSE 0 END,',')