Tentativo di convertire "yy / mm / gg hh: mm: ss" (memorizzato come carattere) in datetime utilizzando la colonna calcolata

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

Domanda

Sembra che dovrebbe essere semplice ma mi sta spingendo verso il muro.

Ho due colonne: 'tx_date' e 'time' memorizzate ciascuna come char (10). (cattivo design del database lo so, ma non era il mio design)

Da una query posso convertirli in un datetime bene -

" ... convertire (datetime, tx_date, tempo, 11) ... "

(quindi tx_date "09/11/27" e time "07: 12: 18" produrrà "27/11/2009 07: 12: 18.000")

Ma se poi copio e incollo il convertitore nel campo 'formula' in SQL Server Management Studio (lo stesso posto in cui l'ho provato funziona in una query) mi dice "Errore nella convalida della formula per la colonna ..."

Se lo costringo a usare quella formula comunque funziona, ma non voglio andare avanti e aggiungere questa colonna calcolata a una tabella importante fino a quando non so perché ha un problema con la formula.

È stato utile?

Soluzione

È possibile aggiungere il campo calcolato alla tabella in SQL Server Management Studio utilizzando una query senza problemi:

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

ma purtroppo non puoi farlo " PERSISTED " poiché la funzione CONVERT in non deterministica. Ciò significa che verrà esaminato ogni volta che si accede e non è possibile inserire un indice su di esso :-(

Marc

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top