消息8114,级别16,状态5,行27错误将数据类型varchar转换为bigint

时间:2016-04-13 04:53:53

标签: sql-server

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

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

1 个答案:

答案 0 :(得分:1)

来自MSDN

  

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

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

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

你的char在最后有一些空格。如果你看到错误..如果你想使用char,你必须替换下面的空格..

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