尝试将日期添加到日期,然后格式化日期,但会收到此错误
消息512,级别16,状态1,行2子查询返回的值超过1 值。当子查询遵循=,!=,<,< =,>,> =或子查询用作表达式时,不允许这样做。
这是查询
DECLARE @date DATETIME
SET @date = (SELECT DATEADD(DAY,30,dbo.EJTable.Receipt_Date_Time) FROM dbo.EJTable)
SELECT FORMAT(@date, 'd', 'en-GB') as '*InvoiceDate'
FROM dbo.EJTable
答案 0 :(得分:1)
我认为错误非常清楚。只是嵌套功能。您无法将结果集保存为标量变量:
SELECT FORMAT(DATEADD(DAY, 30, t.Receipt_Date_Time) 'd', 'en-GB') as '*InvoiceDate'
FROM dbo.EJTable t;
瞧!根本不需要变量。
请注意,我还引入了一个表别名,因此查询更容易编写和阅读。
答案 1 :(得分:0)
您还可以将样式103
与convert()
一起使用en-GB
(dd / mm / yyyy)格式。
select convert(char(10),dateadd(day,30,getdate()),103)
返回:12/06/2017
对于您的代码,这看起来像:
select convert(char(10),dateadd(day, 30, Receipt_Date_Time),103) as [*InvoiceDate]
from dbo.EJTable;
这提供了与Gordon Linoff的答案相同的结果,但format()
可能更慢,请看一下:format()
is nice and all, but… - Aaron Bertrand
<小时/> 此外,不推荐使用别名的字符串文字(例如
'*InvoiceDate'
)。建议将包含带方括号的特殊字符的别名括起来(例如[*InvoiceDate]
)。