Der Versuch, „yy / mm / dd hh: mm: ss“ zu konvertieren (gespeichert als char) in Datumzeit unter Verwendung von berechneten Spalte

StackOverflow https://stackoverflow.com/questions/1814019

Frage

Dies scheint, wie es sollte einfach sein, aber es macht mir die Wand.

Ich habe zwei Spalten - 'tx_date' und 'Zeit' jeweils als char (10) gespeichert. (Schlechtes Datenbankdesign Ich weiß, aber war nicht mein Design)

Von einer Abfrage kann ich sie in eine Datetime konvertieren just fine -

"... konvertieren (Datumzeit, tx_date, Zeit, 11) ..."

(so "09/11/27" und Zeit "07.12.18" wird tx_date produzieren "2009-11-27 07: 12: 18,000")

Aber wenn ich dann kopieren und die Umwandlung in die ‚Formel‘ Feld in SQL Server Management Studio einfügen (der gleichen Stelle ich es in einer Abfrage getestet funktioniert) es sagt mir, „Fehler, die Formel für Spalte Validierung ..“

Wenn ich es erzwingen, dass die Formel verwenden sowieso funktioniert es, aber ich will nicht gehen und diese berechnete Spalte zu einer wichtigen Tabelle hinzufügen, bis ich weiß, warum es ein Problem mit der Formel hat.

War es hilfreich?

Lösung

Sie können das berechnete Feld die Tabelle in SQL Server Management Studio fügen Sie eine Abfrage kein Problem mit:

ALTER TABLE dbo.YourTable 
  ADD NewDateTimeField AS CONVERT(DATETIME, tx_date + ' ' + time, 11) 

aber leider kann man nicht macht es „verharrte“, da die CONVERT-Funktion in nicht-deterministisch. Das bedeutet, es wird jedes Mal geprüft werden, es zugegriffen wird, und Sie können keinen Index auf sie setzen: - (

Marc

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top