Msg 8114,级别16,状态5,第27行将数据类型varchar转换为bigint时出错



我是sql的新手,我只想问一下这段代码出了什么问题。

DECLARE @Id as BIGINT;
SET @Id = CAST(REPLACE(CONVERT(CHAR, GETDATE(), 103), '/', '') + REPLACE(CONVERT(CHAR, GETDATE(), 108), ':', '') AS BIGINT);

来自MSDN:

当指定NOT NULL子句时,char数据类型是固定长度的数据类型。如果在char NOT NULL列中插入了一个短于列长度的值,则该值将用空格填充到该列的大小。例如,如果一列定义为char(10),并且要存储的数据是"music",则SQL Server将此数据存储为"music _____",其中"_"表示空格。

尝试使用varchar,并尝试提及确切的大小,而不考虑char/vargar

DECLARE @Id as BIGINT;
SElect @Id =   REPLACE(CONVERT(varchar(12), GETDATE(), 103), '/', '') +   REPLACE(CONVERT(varchar(12), GETDATE(), 108), ':', '')
print @id  

你的字符末尾有一些空格。所以你看到了错误。。如果你想使用char,你必须替换如下的空格。。

DECLARE @Id as BIGINT;
set @Id =   replace( REPLACE(CONVERT(char(20), GETDATE(), 103), '/', ''),' ','') +    replace(REPLACE(CONVERT(char(20), GETDATE(), 108), ':', ''),' ','')
print @id  

相关内容

  • 没有找到相关文章

最新更新