2010-12-27 20 views
0

Ich habe ein Problem beim Konvertieren einer Spalte mit Datetime und müssen in Getdate konvertieren.Umwandlung von Datetime zu Getdate

Zum Beispiel Spalte A (datetime, null) und diese Spalte enthält Wert einige richtige Werte mit getdate und einige Werte haben so etwas wie '1900-01-01 15: 32: 00.000'. Ich brauche Hilfe, um die Werte in reguläre getdate Werte zu ändern. Und einige Felder in diesen Spalten haben ebenfalls NULL.

Vielen Dank im Voraus, Shashra

+0

Was sollte der Wert von 1900-01-01 15 : 32: 00.000 eigentlich sein? GetDate() ist eine nicht-deterministische Funktion, die das aktuelle Datum/die Uhrzeit gemäß dem System zurückgibt. – JoshBerke

+0

"Getdate" ist nicht der Name eines Formats oder eines Datentyps, sondern der Name einer Funktion, die bei jedem Aufruf den Zeitpunkt zurückgibt, zu dem sie aufgerufen wurde. Also, was meinst du "in getdate konvertieren"? –

+0

Was genau versuchen Sie zu tun? Legen Sie alle Daten mit dem Datum 1900-01-01 auf das aktuelle Datum und die Uhrzeit fest? Ignorieren Sie "NULL" und andere Daten? – codingbadger

Antwort

1

ein paar Dinge:.

GetDate() ist eine Funktion, die das aktuelle Datum und die Uhrzeit zurück Ja, enthält es die aktuelle Zeit

Das Beispiel, das Sie sehen aus wie eine ‚reine‘ Zeit zur Verfügung stellen (. dh keine Datumskomponente verfügbar). Wenn das echte Daten sind, dann erhalten Sie in diesem Feld Dezimalwerte der Form 0. ####. Natürlich könnten Sie echte Daten von diesem Datum haben, oder Sie haben gerade dieses Beispiel für diese Frage erfunden.

Schließlich, wenn Sie wirklich wollen, ist die Zeitkomponente loszuwerden, so dass Sie ein "reines" Datum haben, versuchen Sie konvertieren (datetime, konvertieren (nvarchar (50), getdate(), 101)). Die innere Konvertierung erzeugt Text in der Form mm/tt/jjjj und die äußere Konvertierung wandelt diese in ein Datum der Form zurück. Jyyy-mm-dd 00: 00: 00.000

1
  • Sie würden den Ausgang des GETDATE nicht speichern(), wenn Sie es wollen, jedes Mal anders. Sie würden tun SELECT col1, col1, GETDATE() AS Now FROM Mytable...

  • Es gibt keine sichere Art und Weise ist es, einen arbiträren Zustand, ohne dass wie „alles auf dem letzten Monat ist OK“ ein „echtes“ vakes von einem „falschen“ Wert zu unterscheiden. „1900-01-01 15: 32: 00.000“ ist ein gültiger Datetime-Wert

Wenn Sie Werte bedeuten „ignorieren, in dem nur eine Zeit, etwas, nicht Datum (1. Januar 1900) was ist dann:

SELECT 
    col1, col2, 
    CASE WHEN DateTimeCol <> '1900-01-01 15:32:00.000' THEN DateTimeCol ELSE GETDATE() END, 
    CASE WHEN DateTimeCol > '1901-01-01' THEN DateTimeCol ELSE GETDATE() END, 
    ... 
Verwandte Themen