2016-04-13 132 views
1

我是新來的sql,我只想問這個代碼有什麼問題。Msg 8114,Level 16,State 5,Line 27將數據類型varchar轉換爲bigint時出錯將數據類型varchar轉換爲bigint

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

試試你的QRY的分別:SELECT REPLACE(CONVERT(CHAR,GETDATE(),103), '/', ''),並檢查結果 – Mate

+0

@Mate我嘗試了,它有效,但是什麼錯了代碼。它在以前工作,但現在它提供了一個錯誤。 – Jostine

回答

1

MSDN

char數據類型是指定的NOT NULL子句當一個固定長度的數據類型。如果將短於列長度的值插入到char NOT NULL列中,則該值將用空格填充到列的大小。例如,如果某列定義爲char(10),並且要存儲的數據是「音樂」,則SQL Server將此數據存儲爲「music_____」,其中「_」表示空格。

嘗試使用VARCHAR,也嘗試不論提

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

你的焦炭是一種在end.so一些空格,你看到你想要的error..if CHAR/VARCHAR的確切大小使用CHAR,必須更換場所,如下面..

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

哦,好的,謝謝! – Jostine

相關問題