2009-04-16 3 views
5

kann jemand helfen, haben wir eine SQL Server 2005-Datenbank installiert (eigentlich ist es ein SQL Server 2000 mit einem SQL Server 2005 Server verbunden) Standard-Serversprache USA mit Datumformat wie MM/TT/JJ und wir müssen es wirklich auf diese Weise behalten, aber haben gerade eine neue Datenbank auf den Server hochgeladen und diese muss das Datumsformat für TT/MM/JJJJ haben.Ändern dateformat auf einer SQL Server DB und nicht auf dem ganzen Server zu dd/mm/jjjj

Kann ich eine Änderung nur an einer Datenbank und nicht am gesamten Server erzwingen? Wenn ich die Änderung auf den gesamten Server zwingen, wird es machen alle meine anderen apps

Zum Beispiel scheitern derzeit wir diese SQL-Anweisung haben, die nicht ..

SELECT * FROM sesiones WHERE ultimo_acceso < '16/04/2009 13.36.17'

aber natürlich können wir diese hinzufügen, die jetzt

SELECT * FROM sesiones WHERE ultimo_acceso < Convert (Datetime, '16/04/2009 13.36.17' funktioniert, 103)

aber das Problem ist, dass es eine große Anzahl von SQL-Anweisungen innerhalb der Anwendung gibt. Die Wahrheit ist, dass die Anwendung ziemlich alt ist und wir wirklich keine Änderungen am Quellcode vornehmen wollen.

SO also, wenn wir eine Änderung nur auf der Datenbank/den Tabellen der spezifischen Datenbank erzwingen könnten dies würde genügen

wirklich Jede Hilfe

+3

+1. Termine sind immer ein Schmerz. Persönlich denke ich, dass die Welt nur YYYYMMDD benutzen sollte. –

+0

@Ian mit Ausnahme von 19700102 ist mehrdeutig ;-P –

Antwort

7

Sie schätzten die Standard-Datumsformat pro Benutzer durch Auswahl der Standardsprache ändern können für diesen Benutzer in SQL Management Studio> Sicherheit> Anmeldungen> {user Eigenschaften}> Def ault Sprache.

Und Sie können für jede Sprache mit

EXEC sp_helplanguage 
+0

Perfekt, ja .. änderte die Benutzer standardmäßig Sprache –

+0

+1 tolle Tipps für einen sql Neophyten ;-) –

+0

+1 Danke! Ich habe mich gefragt, warum Monat und Tag in meinen Abfrageergebnissen vertauscht waren.Warum etwas technisch wie eine Abfrage-Lokalisierung bewusst machen? Vergiss es ... Danke! – Knickedi

3
SET dateformat dmy; 
SELECT * FROM sesiones WHERE ultimo_acceso < '16/04/2009 13:36:17'; 
+0

jetzt frage ich mich wirklich, ob das was Mark sein könnte gefragt :) Wenn dies akzeptiert wird, haben Sie meine Stimme ... –

2

Ich glaube, Sie sind verwirrt das Datumsformat sehen. Datumsangaben in SQL Server werden nicht als Zeichenfolgen gespeichert. Sie werden als 8-Byte-Binärwerte gespeichert und nur in Zeichenfolgen konvertiert, wenn Sie sie dem Benutzer anzeigen. Sie verwenden eine Datetime-Spalte, um Ihre Daten zu halten, richtig?

2

Wenn mit Datetime-Zeichenfolge in SQL Server zu tun, würde ich immer das Datum ISO-8601-Format

YYYY-MM-DDTHH:MM:SS 

verwenden, die unabhängig davon funktionieren sollen, welche Sprache oder regionale Einstellungen, die Sie haben.

Versuchen Sie wählen als:

SELECT * FROM sesiones WHERE ultimo_acceso < '2009-04-16T13:36:17' 

Marc