Доступ к SQL - если даны две даты, возвращаются даты предыдущего периода

Мне нужно найти даты предыдущего периода времени - например, если данные месяцы с 13 января по 13 марта, я должен иметь возможность рассчитать, что предыдущий период - с 12 октября по 12 декабря. Или, если даты с 12 июля по 13 июня, мне нужно придумать с 11 июля по 12 июня. Таким образом, в основном, для периода времени x месяцев, мне нужно вернуть другой период времени x месяцев, который завершает месяц до указанного периода времени.

Дата всегда будет первой в этом месяце, поэтому 1 июня 2012 года или 6/1/2012 или 1/6/2012 в зависимости от того, где вы находитесь в мире.

Этот SQL-запрос работает, но, кажется, вызывает проблемы позже, когда я включаю его в запрос левого соединения (см. Существующий вопрос:Access 2007 - при левом присоединении к запросу возвращается #Error вместо Null)

SELECT DATEADD("m",
1-(1+MONTH(QueryDates.EndDate)-MONTH(QueryDates.StartDate)+
    (12*(YEAR(QueryDates.EndDate)-YEAR(QueryDates.StartDate)))),
DATEADD("m",-1,QueryDates.StartDate)) AS StartDatePrevious, 
DATEADD("m",-1,QueryDates.StartDate) AS EndDatePrevious
FROM QueryDates;

Это выглядит немного сумасшедшим, откуда яЯ сижу, поэтому есть более простой способ решения этой задачи; или что-то не так в SQL, что может позже запутать Access?

Ответы на вопрос(2)

Ваш ответ на вопрос