我正在尝试创建一个唯一的值,它将保存当前ID和当前日期。 @QuoteNumber是我想要创建的唯一字段。
到目前为止,我认为我在正确的轨道上但是在尝试将日期添加到我的nvarchar中时出现错误。
DECLARE @QuoteNumber nvarchar(50)
DECLARE @Date varchar(10)
SELECT @Date = (LEFT(CONVERT(VARCHAR, GETDATE(), 120), 10))
SET @QuoteNumber = 'QU-' + @Date + '-' + SCOPE_IDENTITY()
错误:
将数据类型varchar转换为数字时出错。
修改
我也尝试过:
SET @Date = CONVERT(varchar(10), GETDATE(), 20)
答案 0 :(得分:2)
尝试这样做:
SELECT @Date = CONVERT(VARCHAR(10), GETDATE(), 120);
您应始终使用varchar()
的长度,但这并不会影响此查询。
然后,scope_identity()
会返回一个数字,因此您需要转换:
SET @QuoteNumber = 'QU-' + @Date + '-' + cast(SCOPE_IDENTITY() as varchar(255);
答案 1 :(得分:2)
DECLARE @QuoteNumber nvarchar(50)
DECLARE @Date varchar(10)
SELECT @Date = CONVERT(VARCHAR(10),GETDATE(),121)
SET @QuoteNumber = 'QU-' + @Date + '-' + CAST(SCOPE_IDENTITY() AS VARCHAR(10))
它不是导致问题的日期,它是SCOPE_IDENTITY()
函数,它返回INT数据,并且您正在尝试将Int值与字符串连接起来。因为INT是具有更高总统性的数据类型,所以sql server尝试将字符串转换为INT并失败,并且您得到错误。
答案 2 :(得分:1)
SCOPE_IDENTITY()
导致该错误。您还需要将其转换为varchar
。