Запрос на возврат записей между годами работы работает некорректно - PullRequest
0 голосов
/ 03 августа 2020

У меня возникли проблемы с запросом записей за годы работы. В этом случае финансовый год всегда начинается 01/08/YYYY и заканчивается 31/07/YYYY. Например: для 2019-2020 начало бизнеса: 01/08/2019 конец 31/07/2020 Для 2020-2021 начало бизнеса: 01/08/2020 конец 31/07/2021

Когда я сегодня открыл базу данных, записи все еще отображаются, хотя это новый деловой год. Как будто мои запросы не работают с начала нового Делового года. У меня:

'To return records for the Current Business year:
SELECT * FROM tblData WHERE (((DateDiff('m',[PaymentDate],DateSerial(Year(Date()),1,1))) Between -6 And 5));

'To return records for Previous Business year: 
SELECT * FROM tblData WHERE (((DateDiff('m',[PaymentDate],DateSerial(Year(Date())-1,1,1))) Between -6 And 5));

Мой вопрос: как правильно запросить записи за текущий и предыдущий финансовый год?

Ответы [ 2 ]

1 голос
/ 03 августа 2020

Если начало и конец финансового года постоянны (yyyy/08/01 - yyyy+1/07/31), попробуйте следующее - для текущего года:

SELECT t.*
FROM tblData As t
WHERE t.PaymentDate BETWEEN DateSerial(Year(Date()), 8, 1) AND DateSerial(Year(Date())+1, 7, 31);

для предыдущего года:

SELECT t.*
FROM tblData As t
WHERE t.PaymentDate BETWEEN DateSerial(Year(Date())-1, 8, 1) AND DateSerial(Year(Date()), 7, 31);

Если вы хотите передать значение года в запрос, попробуйте следующее:

--pass year to the query to grab data for business year yyyy/08/01 - yyyy+1/07-31

PARAMETERS BusinessYear SHORT;

SELECT t.*
FROM tblData As t
WHERE t.PaymentDate BETWEEN DateSerial(Year(BusinessYear), 8, 1) AND DateSerial(Year(BusinessYear)+1, 7, 31);

Дополнительные сведения см. В: декларация PARAMETERS (Microsoft Access SQL)

1 голос
/ 03 августа 2020

За предыдущий финансовый год:

select t.*
from tblData t
where year(dateadd('m', -8, PaymentDate)) = year(date()) - 1

Лог c означает вычитание 8 месяцев из даты, а затем извлечение года.

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