Fehler out-of-range bei CONVERT oder CAST auf DATETIME

Aus ITwiki
Version vom 19. Februar 2014, 18:48 Uhr von Franky (Diskussion | Beiträge)

Wechseln zu: Navigation, Suche

Fehler

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

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.

Standardmäßig das deutsche Format (SQL Server 2008)

Um das Deutsche Datumsformat als Standard zu setzen, kann man

1. bei dem Benutzer im Microsoft SQL Server Management Studio unter

Security > Logins > Benutzername

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

War diese Information hilfreich?
Bitte stimme unten ab.
2
0
Es wurden seit Erstellung der Umfrage am 22:50, 11. Jul. 2017 2 Stimmen abgegeben.
poll-id E49D4DD2BFC32A3991B182C978F99B7F