输出年份和月份的字符串

时间:2016-11-10 15:45:38

标签: sql

尝试输出类似的内容:

2016,11

使用此:

SELECT
CONVERT(VARCHAR(20),YEAR(GETDATE()) + ',' + MONTH(GETDATE())) AS YearMonth

我错过了转换中的内容吗?因为我收到了这个错误:

  

转换varchar值时转换失败''到数据类型   中间体

由于

3 个答案:

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