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

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

(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

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

Weitere Informationen

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