Вставить результат DATEDIFF в столбец таблицы? - PullRequest
0 голосов
/ 29 июня 2018

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

select DATEDIFF (DAY,date_1,date_2) As date_test from tbl_datetest;

Ответы [ 4 ]

0 голосов
/ 29 июня 2018

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

Обновление значения столбца в той же таблице, где существуют оба столбца даты.

update tbl_datetest set <SameTableColumnName> = DATEDIFF (DAY,date_1,date_2) from tbl_datetest

Чтобы обновить значение столбца в другой таблице, используя оба столбца даты вашей текущей таблицы

update <OtherTableName> set <OtherTableColumnName> = DATEDIFF (DAY,b.date_1,b.date_2) from tbl_datetest b

Используйте предложение where, как вам нужно в том же запросе.

0 голосов
/ 29 июня 2018

Вы можете сохранить результат как INT. Тип возвращаемого значения - целое число: https://docs.microsoft.com/en-us/sql/t-sql/functions/datediff-transact-sql?view=sql-server-2017

Или вы можете сохранить вычисляемый столбец:

ALTER TABLE tbl_datetest 
ADD 
  [date_test] AS DATEDIFF (DAY,date_1,date_2) PERSISTED
0 голосов
/ 29 июня 2018

Сохранение значения, которое может быть получено из других полей, является Ошибка проектирования транзитивной зависимости . Как сказал @Lamu, с вычисляемым столбцом все в порядке, в противном случае вы также можете поместить это вычисление в view.

0 голосов
/ 29 июня 2018
UPDATE yourtable 
SET    yourcolumn = (SELECT Datediff (day, date_1, date_2) AS date_test 
                     FROM   tbl_datetest
                     WHERE  primarykey = avalue) 
WHERE  primarykey = avalue  

Выполняет обновление требуемой таблицы, перезаписывая нужный столбец с возвращаемым значением DATEDIFF()

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

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