#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, поскольку начинается новый период записи?. Я надеюсь, что это поведение повторяется каждый год. С новым годом!