MS Access SQL - Как получить данные за последние 13 месяцев с первого числа первого месяца? - PullRequest
0 голосов
/ 13 ноября 2018

Я попробовал приведенный ниже код, чтобы получить данные за последние 13 месяцев. Но это не тянет с 1-го числа месяца. Как я могу изменить его, чтобы получать данные с первого дня месяца? Например, Если я запускаю его сегодня (13.11.18), я хочу получить данные с 11.11.17 по сегодняшний день.

    SELECT * FROM MyTable T 
    WHERE T.[Date Joined] >= DATEADD("m", -13, DATE());

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

This:

SELECT * FROM MyTable T 
    WHERE T.[Date Joined] >= DATEADD("m", -13, Dateserial(year(date()), month(date()),1));

использует

Dateserial(year(date()), month(date()),1)

, что дает вам 1-е число текущего месяцапоэтому вы вычитаете из этого 13 месяцев.

0 голосов
/ 13 ноября 2018

Вам нужно изменить день на 1 как

SELECT * 
FROM MyTable T 
WHERE T.[Date Joined] >= DATEADD("d", -(DAY(Date())-1),DATEADD("m", -13, DATE());

Или с помощью функции DATESERIAL(), которая возвращает DATE из частей как

SELECT * 
FROM MyTable T 
WHERE T.[Date Joined] >= DATEADD("m", -13, DATESERIAL(YEAR(Date()), MONTH(DATE()), 1))

Он получит часть YEAR с даты, которая в вашем случае равна 2018, затем получит часть MONTH, равную 11 и 1, которая является днем, и объединит их ввернуть DATE как 2018-11-1

...