我是sql的新手,我只是想问一下这段代码有什么问题。
DECLARE @Id as BIGINT;
SET @Id = CAST(REPLACE(CONVERT(CHAR, GETDATE(), 103), '/', '') + REPLACE(CONVERT(CHAR, GETDATE(), 108), ':', '') AS BIGINT);
答案 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