Как вернуть прошлые и последующие 25 числа месяца - PullRequest
0 голосов
/ 10 июня 2019

Мне нужно вернуть как последний экземпляр 25-го числа месяца до сегодняшнего дня, так и следующий экземпляр 25-го числа после сегодняшнего дня в SQL Server 2014.

У меня нет готового кода для этого, так как я не владею SQL

Как пример

  • если сегодня 28 июня, мне нужно вернуться 25 июня и 25 июля
  • Если сегодня 15 июня, мне нужно вернуться 25 мая и 25 июня

Не будет случая, когда это будет запрошено 25 числа каждого месяца, поэтому проверка там не требуется.

1 Ответ

4 голосов
/ 10 июня 2019

Одна идея с использованием DATEFROMPARTS (предполагается, что вы используете 2012+, но в 2008 году осталось 4 недели поддержки, предположение " safe " нет?):

SELECT DATEFROMPARTS(YEAR(V.Today),MONTH(V.Today),25),
       DATEADD(MONTH,1,DATEFROMPARTS(YEAR(V.Today),MONTH(V.Today),25))
FROM (VALUES(DATEADD(DAY, -25,GETDATE()))) V(Today);

На сегодня это возвращает 2019-05-25 и 2019-06-25 и возвращает правильные значения для вашего примера: Т.е.:

SELECT DATEFROMPARTS(YEAR(V.Today),MONTH(V.Today),25),
       DATEADD(MONTH,1,DATEFROMPARTS(YEAR(V.Today),MONTH(V.Today),25))
FROM (VALUES(DATEADD(DAY, -25,'20190628'))) V(Today);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...