Как автоматически обновлять столбец разницы дней ежедневно? - PullRequest
0 голосов
/ 09 июля 2020

Я управляю таблицей базы данных, в которой много столбцов, два из них следующие:

  1. Last_Email_Send_Date (Datetime)
  2. Days_Since_Last_Email_Send (int)

Во втором столбце сохраняется разница дат столбца 1 с текущей датой. Проблема в том, что мне приходится обновлять столбец 2 ежедневно заданием SQL, потому что разница в днях меняется ежедневно. Есть ли какой-либо другой метод, позволяющий автоматически обновлять разницу в днях без выполнения задания?

Я попытался создать вычисляемый столбец, но он не позволяет использовать недетерминированную c функцию (getdate ()).

Я знаю, что это не лучший способ сохранять значение даты, а также разницу в днях. На самом деле в моем случае таблица используется в стороннем инструменте, и мне нужны оба этих столбца.

1 Ответ

1 голос
/ 09 июля 2020

Вы не можете создать PERSISTED вычисляемый столбец с GETDATE(). Вы можете создать обычный вычисляемый столбец, который вычисляется во время выполнения запроса.

Вычисляемый столбец в MSDN

create table #test(Last_Email_Send_Date date)

alter table #test add Days_Since_Last_Email_Send as (datediff(day,Last_Email_Send_Date,getdate()))

insert into #TEST values('2020-01-01')

select * from #test
+----------------------+----------------------------+
| Last_Email_Send_Date | Days_Since_Last_Email_Send |
+----------------------+----------------------------+
| 2020-01-01           |                        190 |
+----------------------+----------------------------+
...