Функция SQL Server 2008 на двух столбцах даты - PullRequest
1 голос
/ 06 декабря 2010

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

insertDate datetime
updateDate datetime
activity   integer

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

Ответы [ 3 ]

7 голосов
/ 06 декабря 2010

Вы можете заполнить [InsertDate] значением по умолчанию GETDATE() и заполнить [UpdateDate] текущей датой при обновлении столбца (поскольку вы используете процедуры ( wink ), этодействительно легко контролировать).Если вы не используете процедуры и хотите контролировать.В столбце [UpdateDate] вы можете использовать триггер для заполнения этого столбца.

Пусть столбец Activity будет вычисляемым полем:

DATEDIFF(day, [InsertDate], [UpdateDate])

DATEDIFF

Расчетные столбцы


Из MSDN о вычисляемых столбцах:

Unless otherwise specified, computed columns are virtual columns that are
not physically stored in the table. Their values are recalculated every
time they are referenced in a query. The Database Engine uses the PERSISTED
keyword in the CREATE TABLE and ALTER TABLE statements to physically store
computed columns in the table. Their values are updated when any columns
that are part of their calculation change. By marking a computed column as
PERSISTED, you can create an index on a computed column that is
deterministic but not precise.
1 голос
/ 06 декабря 2010

Поместите этот код в триггер.

update MyTable
    set updateDate = GETDATE()
        , activity = select (DATEDIFF(DAY, insertDate, GETDATE()))
1 голос
/ 06 декабря 2010

Поскольку все необходимые для этого данные находятся в одной строке таблицы, вы можете создать вычисляемый столбец . Если вы хотите, чтобы фактическое значение столбца обновлялось при каждом обновлении строки, вам нужно взглянуть на триггеры .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...