将日期转换为nvarchar?

时间:2014-03-25 14:51:46

标签: sql sql-server date

我正在尝试创建一个唯一的值,它将保存当前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)

3 个答案:

答案 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