SQL Server-Datetime-Probleme. American vs. British?
Auf meiner test-DB, die Daten werden angezeigt in einem DD/MM/YYYY-format. Durch angezeigt, ich meine, wenn Sie mit der rechten Maustaste, öffnen Sie die Tabelle in Management Studio, um die zurückgegebenen Daten werden angezeigt in einem DD/MM/YYYY-format.
Komisch ist, wenn ich schreiben T-SQL-Datensätze abrufen, ich habe zu Eingang ein MM/TT/JJJJ-format, um wieder die richtigen Daten. Gibt es trotzdem kann ich richten Sie diese an einen DD/MM/YYYY format?
InformationsquelleAutor super9 | 2009-07-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie SPRACHE EINSTELLEN wählen Sie das Datum format, SQL Server erwartet in Abfragen (ich denke, dass management studio verwendet client-computer der regionalen Einstellungen für die Anzeige, nicht aber sicher). Jedoch, ich schlage vor, übergeben von Werten die Verwendung von Parametern statt einbetten von Ihnen in der query-Anweisung. Werden Sie nicht irgendwelche Probleme, wenn Sie Parameter verwenden. Es ist für alles gesorgt.
Ändern Sie die server-Standard-Sprache:
Süß. FYI die richtige Tabelle name sys.syslanguages. Auch habe ich gerade herausgefunden, Sie können geändert, die default-Sprache auf user-Ebene, indem Sie zu Sicherheit -> Benutzer-Login -> Eigenschaften -> Sprache. Vielen Dank für die Mehrdad
Nai: syslanguages allein arbeiten, wenn Sie sind in der master-Datenbank. Hinzufügen
sys.
zu, dass die Linie, die die Bildlaufleisten angezeigt werden, so ich Sie verkürzt 😉Oh, ok ich wusste ich nicht 😛
InformationsquelleAutor Mehrdad Afshari
Persönlich, ich immer YYYY-MM-DD-format (oder YYYYMMDD), da es nicht Kultur-spezifisch, und, naja, ich denke, es gefällt mir, weil es "logisch" (vor allem, wenn gefolgt von einer Zeit).
[Edit: ich bin einfach nur reden über das, was ich in meiner SQL-Skripts, um die Kompatibilität sicherzustellen-unabhängig von den Servereinstellungen, nicht, welche SQL-Server "zeigt"]
Sorry, hätte mehr spezifische - Antwort aktualisiert.
InformationsquelleAutor Gary McGill
Können Sie die Standard-Sprache für jedes Individuum SQL Server-Anmeldung. Kann nicht ganz erinnern, aber so etwas wie dieses:
InformationsquelleAutor Dan Diplo
Wenn Sie Datum /Uhrzeit in das format
beispielsweise
es gibt nie Unklarheiten rund um Monat und Datum und deshalb sollten Sie nie ein problem haben
InformationsquelleAutor Russ Cam
In fast allen Fällen der richtige Weg, um dieses Problem zu lösen, ist einfach, nie behandeln Sie das Datum als string an. Wenn Sie einen parameter übergeben, oder verwenden Sie die (Eingabe) - Spalte mit dem Wert, dann wird der server text Konvertierung ist einfach kein Faktor. Zusätzlich zur Vermeidung der i18n Problem, dies verringert auch Ihre Injektion Angriffsfläche. Und es spart ein paar CPU-Zyklen, auch ;-p
Wenn Sie
EXEC
für dynamische SQL -, dann sollte dies ebenfalls parametriert werden, übersp_ExecuteSQL
.Ich vermutete, dass; mein Punkt ist, dass es nicht Frage von, wie der server will mit Ihnen umgehen wie text, wenn Sie einfach noch nie (in Ihrem system) behandeln text".
Ach ich bekomme, was du meinst. Ich normalerweise übergeben Sie in die Variablen aber gut beraten trotzdem. Vielen Dank dafür!
InformationsquelleAutor Marc Gravell
Ich versuche, verwenden Sie die ODBC-kanonische form des Datums, wo immer möglich
{d 'yyyy-mm-dd'}
Auf diese Weise weiß ich, wie sql server interpretiert.
Es funktioniert in TSQL gut.
InformationsquelleAutor Will Rickards
Entweder fügen Sie diese auf Ihrer Website.config-Datei:
oder können Sie diese Aussage auf der Seite:
Hoffe, dass dies helfen.
InformationsquelleAutor Safran Ali