itrain-home  
home
 Aktuelle Seite:  knowhow sql tsql datum datum1.asp 
 



 

Datumsformat auf dem SQL Server ermittlen und festlegen

Das Datumsformat das auf dem SQL Server verwendet wird, hängt in erster Linie von der für die Verbindung zum Server gewählten Sprache ab. Beim Verbindungsaufbau über OLEdb oder ODBC kann die gewünschte Sprache über die Option "Current Language" gesetzt werden.

z.B. verbindung.Properties("Current Language").value = "German"

Wurde keine Sprache beim Verbindungsaufbau festgelegt, so verwendet der SQL Server die für den jeweiligen Benutzernamen (Login) festgelegte Sprache. Um zum Beispiel die standardmäßig eingestellte Sprache für den Benutzernamen "sa" zu ermitteln kann man die gespeicherte Prozedur sp_helplogins verwenden:

Beispiel:

EXEC sp_helplogins "sa"

In der Spalte DefLangName wird dann die für den Benutzernamen "sa" festgelegte Sprache angezeigt.

Beim Anlegen eines neuen Benutzernamens kann die Standardsprache jeweils festgelegt werden (Entweder im Enterprise Manager oder über die gespeicherte Prozedur sp_addlogin). Wird keine Sprache festgelegt, so wird die Standardsprache des Servers verwendet.

Diese Einstellung kann über die gespeicherte Prozedur sp_configure mit dem Parameter 'default language' abgefragt und natürlich auch neu gesetzt werden. Um z.B. Deutsch als Standardsprache für Benutzernamen festzulegen kann der Aufruf

EXEC sp_configure 'default language', 1

und anschließend

RECONFIGURE


ausgeführt werden.
Eine Liste der "Sprach-Ids" findet man, indem man die Tabelle syslanguages in der master-Datenbank abfragt.

Ermitteln der Spracheinstellung für die aktuelle Verbindung

Die Spracheinstellung für die aktuelle Verbindung kann leicht über die globale Variable @@LANGUAGE abgefragt werden. Das Ergebnis ist eine Zeichenkette, die die aktuelle Sprache enthält. 

SELECT @@LANGUAGE

 

Ermitteln des Datumsformats für die aktuelle Sprache

Über die Abfrage SELECT dateformat FROM master..syslanguages WHERE name = @@LANGUAGE erhalten Sie das Standard-Datumsformat für die Verbindung. Dieses Format legt fest, in welcher Reihenfolge bei Datumswerten Tag, Monat und Jahr interpretiert werden. Wurde die Sprache auf "deutsch" gesetzt, erhalten Sie z.B. den Wert 'dmy'.

Beispiel:

SET LANGUAGE deutsch
SELECT dateformat FROM master..syslanguages WHERE name = @@LANGUAGE
SET LANGUAGE english
SELECT dateformat FROM master..syslanguages WHERE name = @@LANGUAGE

Ergebnis:

Changed language setting to Deutsch.
dateformat 
---------- 
dmy

Changed language setting to us_english.
dateformat 
---------- 
mdy

Das Ändern der Sprache hat aber nicht nur Auswirkungen auf die Reihenfolge von Tag, Monat und Jahr bei der Interpretation von Datumswerten. Es werden auch die entsprechenden Kurz- und Langnamen von Monaten und Wochentagen für die entsprechende Sprache aktiviert. Falls Meldungen in der gewählten Sprache auf dem Server vorhanden sind, werden diese ebenfalls im weiteren Verlauf der Sitzung verwendet.

Beispiel:

SET LANGUAGE english
SELECT dateformat FROM master..syslanguages WHERE name = @@LANGUAGE
SELECT CONVERT(varchar(20), GetDate())
SELECT CONVERT(datetime, 'March 1 2000')
SET LANGUAGE deutsch
SELECT dateformat FROM master..syslanguages WHERE name = @@LANGUAGE
SELECT CONVERT(varchar(20), GetDate())
SELECT CONVERT(datetime, '1. März 2000')

Ergebnis:

Changed language setting to us_english.    --(Die Meldung erscheint in der ausgewählten Sprache)
mdy                                        --(Standarddatumsformat für Englisch)

Mar 9 2000 3:33PM                          -- Für die Umwandlung wird der kurze Monatsname verwendet

1.3.2000 00:00:00                          -- Eingaben werden entsprechend der Sprache interpretiert

Spracheneinstellung auf Deutsch geändert.  --(Die Meldung erscheint in der ausgewählten Sprache)
dmy                                        -- (Standarddatumsformat für deutsch)

Mär 9 2000 3:33PM                          -- für die Umwandlung wird der kurze Monatsname der Sprache verwendet

1.3.2000 00:00:00                          -- Eingaben werden entsprechend der Sprache interpretiert

 

Neben der Spracheinstellung, kann auch noch die Option DATEFORMAT verwendet werden, um die Interpretation eines Datums zu verändern. 

SET DATEFORMAT 'dmy' führt dazu, daß alle folgenden Datumsangaben während der Verbindung im Format 'Tag, Monat, Jahr' interpretiert werden.

Diese Einstellung überschreibt das Standardformat der aktuellen Spracheinstellung. Auch ein späterer Wechsel der Sprache, hebt diese Einstellung nicht mehr auf.

SQL Anweisung Ergebnis
DECLARE @datevar datetime  
SET LANGUAGE deutsch Spracheneinstellung auf Deutsch geändert.
SET @datevar = '2.1.1999'  
SELECT @datevar 2.1.1999 00:00:00
SET DATEFORMAT 'mdy'  
SET @datevar = '2.1.1999'  
SELECT @datevar 1.2.1999 00:00:00
SET LANGUAGE french Changed language setting to Français.
SELECT dateformat FROM master..syslanguages WHERE name = @@LANGUAGE dmy
SET @datevar = '2.1.1999'  
SELECT @datevar 1.2.1999 00:00:00

Um zu prüfen, welches Datumsformat in der aktuellen Sitzung tatsächlich verwendet wird, kann die Anweisung DBCC USEROPTIONS verwendet werden.

DBCC USEROPTIONS

Ergebnis:

textsize64512
languageus_english
dateformatmdy
datefirst7
arithabortSET
ansi_null_dflt_onSET
ansi_warningsSET
ansi_paddingSET
ansi_nullsSET

Die Zeile dateformat gibt das Datumsformat an.



Valid XHTML 1.0!

Leerraum

Dokument zum Drucken anzeigen
English Pages
Link-Tipp zum Thema "Internet": www.rabich.de/

Sehr schöne und umfangreiche Site rund um HTML, DHTML und Javascript