我有一个表Invoices,其中的列INVOICE_DATE具有日期时间数据类型。这是一个示例:
2013-06-24 05:34:31.990
我想用月和年填充一个新的计算列,称为期间。我期望像这样:
May'17 or May 2017
这是我尝试过的:
Declare @start datetime ='2010-01-01 08:56:01.490'
Declare @end datetime ='2010-01-06 06:51:31.867'
SELECT Brands$.BRAND_NAME
FROM Brands$
EXCEPT
SELECT DISTINCT Brands$.BRAND_NAME, concat(DateName(MONTH,@start),' ''',right(DateName(YEAR,@start),2))
FROM Brands$
INNER JOIN Products$ ON Brands$.BRAND_ID = Products$.BRAND_ID
INNER JOIN InvDetails$ ON Products$.PRODUCT_ID = InvDetails$.PRODUCT_ID
INNER JOIN Invoices$ ON Invoices$.INVOICE_ID = InvDetails$.INVOICE_ID
WHERE Invoices$.INVOICE_DATE BETWEEN @start AND @end
GROUP BY BRAND_NAME
我收到错误消息:
信息205,级别16,状态1,第90行,所有查询使用 UNION,INTERSECT或EXCEPT运算符必须具有相同数量的 目标列表中的表达式。
答案 0 :(得分:0)
另一个选项是DateName()和Concat()
示例
Declare @D datetime ='2013-06-24 05:34:31.990'
Select concat(DateName(MONTH,@D),' ''',right(DateName(YEAR,@D),2))
返回
June '13
答案 1 :(得分:0)
您可以借助datename函数。
select datename(month,INVOICE_DATE)+' '+datename(year,INVOICE_DATE) as period ,
datename(month,INVOICE_DATE)+''''+RIGHT(datename(yyyy,INVOICE_DATE), 2) as period2
from INVOICE