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

#sql #ms-access

#sql #ms-access

Вопрос:

Предполагается, что этот запрос отображает все записи между двумя датами, которые приходятся на разные годы. т.е. Все записи между началом августа предыдущего года и концом июля текущего года. Я использовал приведенный ниже запрос в прошлом году, но когда я вчера открыл базу данных, я вижу «Нет записей», это явно неправильно, поскольку я знаю, что в базе данных есть запись. Я вижу, что есть проблема с WHERE ((Year(DateAdd('m',-7,[CommissionDate]))=Year(Date()))) наступлением нового года. Я намерен вернуть все записи с начала августа предыдущего года до конца июля текущего года! Могу ли я изменить запрос, чтобы он работал правильно?

 SELECT IIf(Month([CommissionDate]) In (8,9,10),"Q1",IIf(Month([CommissionDate]) In 
(11,12,1),"Q2",IIf(Month([CommissionDate]) In (2,3,4),"Q3","Q4"))) AS Quarter, *
FROM tblAllRecords
WHERE ((Year(DateAdd('m',-7,[CommissionDate]))=Year(Date())))
ORDER BY tblAllRecords.CommissionDate DESC;
 

Ответ №1:

Это должно сработать:

 SELECT 
    Format(DateAdd("m", 5, [CommissionDate]), "Qq") As Quarter,
    *
FROM 
    tblAllRecords
WHERE 
    [CommissionDate] Between 
        DateSerial(Year(Date()) - 1, 8, 1) And 
        DateSerial(Year(Date()), 8, 0) 
ORDER BY 
    tblAllRecords.CommissionDate DESC;
 

Комментарии:

1. Превосходно. Все работает хорошо. @Gustav, будет ли это также работать для начала цикла, т.Е. с 01/08/2021 по 31/07/2021, поскольку начинается новый период записи?. Я надеюсь, что это поведение повторяется каждый год. С новым годом!