Wie konvertieren von datetime in date (mit time 00:00:00.000)
Ich habe einen string '2009-06-24 09:52:43.000", die ich einfügen muss, um eine DateTime-Spalte einer Tabelle.
Aber ich kümmern sich nicht um die Zeit, wollen einfach nur, um es einzufügen als 2009-06-24 00:00:00.000
Wie kann ich das in T-SQL?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für SQL Server 2005 und unten:
Für SQL Server 2008 und höher:
James ist richtig. Wenn Sie beginnen mit einer Zeichenfolge, und das format wird immer das sein, was Sie sagen, es ist, dann halten Sie es einfach und effizient. Verwenden
LEFT( @StrDate, 10)
undCONVERT
deiner datetime-Wert. Getan.Wenn Ihr input-string sein könnte alle gültige Datums - /Uhrzeit-format, dann müssen Sie
CONVERT(datetime, @StrDate)
ersten. Danach gehen Sie mit dem, was Bing sagte nur ausziehen, den Teil der Zeit.Sich um eine Erweiterung die nicht unterstützte version:
Ich bin nicht sicher, ob dies kann Auswirkungen Leistung.
getdate()
ist ein Eingabe-Zeitstempel in meiner Abfrage.select cast(cast(getdate() as DATE) as DATETIME)
Wenn Sie immer das Datum im gleichen format, also yyyy-MM-DD kannst du dir die ersten 10 Zeichen, wenn der Wert und einfügen, was die equivelant von 00:00:00.0000 Zeit, die für das Datum.
Dies ist eine sehr effiziente Möglichkeit, dies zu tun, wie es tut nicht erfordern, Umwandlung von Datentypen, die es erfordert, dass das Datum immer formatiert werden, mit einem vierstelligen Jahr und zwei stellen für Tag & Monat.
warf ihn auf ein Datum, und dann können Sie KONVERTIEREN, um nur das Datum.
Wahrscheinlich eine sauberere und portable Weg, um dies zu tun, aber meiner Jahre alte idiom ist:
Einer Vielzahl von hacks:
convert
zu konvertieren datetime in einen string einfach mit dem Datum-Teilsubstring
zu hacken am Endefloor
Habe ich gefunden, dass das casting als Datum, dann in einen datetime-sehr effizient und intuitiv.
Streifen die Zeit und werfe es vor Datum: