My TB1
MONTH YEAR
----- ----
2 2015
How to Convert month and year columns to a date column with additional string concatenation :-
M_DELIVERY Description
---------- -------------
FEB-15 DELIVERY FOR FEB 2015
答案 0 :(得分:1)
假设您正在使用日期和MSSQL2012 +:
SELECT UPPER( FORMAT(CONVERT(datetime, '2017-02-01',121),'MMM')) + '-' +RIGHT(CAST( YEAR( CONVERT(datetime, '2017-02-01',121)) AS VARCHAR(4)),2) M_DELIVERY
, 'DELIVERY FOR ' +UPPER( FORMAT(CONVERT(datetime, '2017-02-01',121),'MMM'))+' '+ CAST( YEAR( CONVERT(datetime, '2017-02-01',121)) AS VARCHAR(4)) AS Description
其他方式(使用数字而非日期): (您可以更改月份名称缩写。)
SELECT SUBSTRING('GENFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC',1+(MONTH_NUMB-1)*3,3)+'-'+ RIGHT(YEAR_NUMB,2) AS M_DELIVERY
, 'DELIVERY FOR ' + SUBSTRING('GENFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC',1+(MONTH_NUMB-1)*3,3)+' '+ CAST(YEAR_NUMB AS VARCHAR(4)) AS DESCRIPTION
FROM /* sample data */ (SELECT 2 AS MONTH_NUMB, 2015 AS YEAR_NUMB
UNION SELECT 12 AS MONTH_NUMB, 2017 AS YEAR_NUMB
UNION SELECT 1 AS MONTH_NUMB, 2016 AS YEAR_NUMB) X
后者的输出:
M_DELIVERY DESCRIPTION
---------- ---------------------
GEN-16 DELIVERY FOR GEN 2016
FEB-15 DELIVERY FOR FEB 2015
DIC-17 DELIVERY FOR DEC 2017
答案 1 :(得分:1)
您的问题非常简洁" ...对于您的下一个问题,请阅读How to ask a good SQL question和How to create a MCVE
为此你可以像这里一样试试:
DECLARE @Dummy TABLE(TheMonth INT,TheYear INT);
INSERT INTO @Dummy VALUES(2,2015),(5,2017);
SELECT d.TheMonth
,d.TheYear
,A.AsDateTime
,UPPER(CONVERT(VARCHAR(3),A.AsDateTime,100)) + '-' + RIGHT(CONVERT(VARCHAR(100),A.AsDateTime,101),2) AS ShortString
,'DELIVERY FOR ' + UPPER(CONVERT(VARCHAR(3),A.AsDateTime,100)) + ' ' + CAST(d.TheYear AS VARCHAR(4)) AS LongString
FROM @Dummy AS d
CROSS APPLY(SELECT CAST(CAST(d.TheYear AS VARCHAR(4)) + REPLACE(STR(d.TheMonth,2),' ','0')+'01' AS DATETIME)) AS A(AsDateTime);
返回
M Y AsDateTime ShortString LongString
2 2015 2015-02-01 00:00:00.000 FEB-15 DELIVERY FOR FEB 2015
5 2017 2017-05-01 00:00:00.000 MAI-17 DELIVERY FOR MAI 2017
您没有提供SQL Server的版本。从2012年开始,您可以通过FORMAT
和CONCAT
正如你所看到的,我的系统产生了#34; Mai"这是" May"的德语拼写。文化依赖格式(甚至更糟糕的是:依赖于语言的格式)是非常危险的......