Изменить номер автоматически с функцией - PullRequest
0 голосов
/ 01 октября 2019

У меня есть простая функция, которая получает число и сумму + 1:

ALTER FUNCTION [dbo].[GetNextProjectNumber] ()  
RETURNS INT
AS  
BEGIN
    DECLARE @LegacyKey INT

    SELECT @LegacyKey = (MAX(CAST(LegacyKey AS INT)) + 1) 
    FROM Project; 

    RETURN @LegacyKey;
END

Так что каждый год мы меняем число @LegacyKey на новое вручную, например:

In 2017: 18000
In 2018: 19000
In 2019: 20000
etc..

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

Сегодня значение должно быть 20000, после его изменения оно должно составить + 1 с октября 2020, в октябре 2020 года оно должно измениться на 21000

Как можноЯ достигаю этого?

Ответы [ 2 ]

1 голос
/ 01 октября 2019

Вот еще один вариант:

select (year(dateadd(month, 3, getDate())) - 2000) * 1000

Пример 1:

select (year(dateadd(month, 3, '2019-09-30 13:29:07.433')) - 2000) * 1000

Возвращает

19000

Пример 2:

select (year(dateadd(month, 3, '2020-10-01 13:29:07.433')) - 2000) * 1000

Возвращает

21000

Добавляя 3 месяца к текущей дате, мы можем обеспечить выбор «следующего» года вместо текущего при умножении на 1000.

1 голос
/ 01 октября 2019

Число может выглядеть следующим образом:

select (year(dateadd(month, -10, getdate())) - 2017) * 1000 + 17000

На самом деле, я не уверен, хотите ли вы + 17000 или + 18000, но идея та же. (Производит ли изменение в 2019-10-01 номер 2020 или номер 2019?)

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