Na sintaxe do meu exemplo abaixo, quero que o campo delayed
seja a diferença em dias entre eles gotitdate
e dunitdate
sei que essa sintaxe me dará o resultado, e eu iria configurar isso como um OnInsert()
e um AfterUpdate()
gatilho , mas meus dois campos não são obrigatórios! Não posso alterar a estrutura da tabela para que sejam obrigatórios.
Pergunta em questão, como posso usar essa sintaxe de atualização para contabilizar uma data nula, para atualizar para 0 se um dos campos for nulo ou atualizar para o DateDiff()
se ambos os campos não forem nulos? E como sempre, se houver uma abordagem melhor para esta metodologia, estou aberto a sugestões:
Create Table #Moofasa
(
gotitdate date
,dunitdate date
,delayed int
)
Insert Into #Moofasa (gotitdate, dunitdate) Values
('07/01/2016','07/05/2016')
,('07/01/2016','07/04/2016')
,('07/04/2016','07/08/2016')
Update #Moofasa
Set delayed = DateDiff(d, gotitdate, dunitdate)
WHERE delayed is null
Select * from #Moofasa
--Drop Table #Moofasa
Uma coluna computada resolveria o problema e provavelmente seria melhor do que ter gatilhos:
Testado em: rextester.com :
dá: