2016-04-13 6 views
1

Ich bin neu bei SQL, ich möchte nur fragen, was mit diesem Code falsch ist.Msg 8114, Ebene 16, Status 5, Zeile 27 Fehler beim Konvertieren des Datentyps varchar in bigint

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

versuchen ihr qry die separat: SELECT REPLACE (CONVERT (CHAR, GETDATE(), 103), '/', '') und Prüfergebnissen – Mate

+0

@Mate Ich habe es versucht, und es funktioniert, aber was ist los mit dem Code. Es funktioniert vorher, aber jetzt gibt es einen Fehler. – Jostine

Antwort

1

Von MSDN:

Der char-Datentyp ist ein fester Länge Datentyp, wenn die NOT NULL-Klausel angegeben ist. Wenn ein Wert kürzer als die Länge der Spalte in eine char NOT NULL-Spalte eingefügt wird, wird der Wert rechts mit Leerzeichen auf die Größe der Spalte aufgefüllt. Wenn beispielsweise eine Spalte als char (10) definiert ist und die zu speichernden Daten "Musik" sind, speichert SQL Server diese Daten als "Musik_____", wobei "_" für ein Leerzeichen steht.

Versuchen varchar und versuchen Sie auch genaue Größe unabhängig von char/varchar

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

Ihr Zeichen ist zu erwähnen, einige Leerzeichen am end.so, Sie sehen die error..if Sie wollen verwenden char, müssen Sie Leerzeichen ersetzen wie unten ..

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

Ooh okay, danke! – Jostine

Verwandte Themen