我是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