Fehler out-of-range bei CONVERT oder CAST auf DATETIME
Aus ITwiki
Inhaltsverzeichnis
Fehler[Bearbeiten]
Beim Konvertieren eines Strings in das DATETIME Formats erscheint der Fehler
The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.
obwohl ein gültiges Datum als String übergeben wurde, z.B. 31.01.2014.
Lösung[Bearbeiten]
Es muss der Convert Funktion der Style des zu parsenden Datums übergeben werden. z.B.:
Convert(DATETIME, '31.01.2014', 104)
Das 104 steht für Deutsch, also das Format tt.mm.jjjj.
Die Liste der unterschiedlichen Styles findet ihr hier.
Alternativ kann man auch vorab die Sprache für die Abfrage setzen:
SET LANGUAGE Deutsch;
Cast('31.01.2014' AS DATETIME);
Standardmäßig das deutsche Format (SQL Server 2008)[Bearbeiten]
Um das Deutsche Datumsformat als Standard zu setzen, kann man
1. Bei dem Benutzer im Microsoft SQL Server Management Studio unter
Security > Logins > Benutzername
oder per SQL
ALTER LOGIN [MyUser] WITH DEFAULT_LANGUAGE = German
in den Properties die Default language auf German setzen.
2. Und die Standard-Sprache des SQL Servers auf Deutsch ändern:
EXEC sp_configure 'default language', 1;
GO
RECONFIGURE WITH OVERRIDE;
GO
Mit diesem Befehl bekommt ihr die verfügbaren Sprachen angezeigt:
SELECT msg.language_id, lang.langid, alias
FROM sys.messages AS msg
JOIN sys.syslanguages AS lang ON lang.msglangid = msg.language_id
GROUP BY msg.language_id, lang.langid, alias
Bewertung[Bearbeiten]
War diese Information hilfreich?
Bitte stimme unten ab.
2
0
Es wurden seit Erstellung der Umfrage am 21:50, 11. Jul. 2017 2 Stimmen abgegeben.
poll-id E49D4DD2BFC32A3991B182C978F99B7F