Как выбрать даты последних 30 дней в MySQL?

Могу ли я как-то перечислить даты последних 30 дней в MySQL? Не со стола!

Например, я думаю примерно так:

SELECT date WHERE date BETWEEN SUBDATE(NOW(), INTERVAL 30 DAY) AND NOW();

Это возможно?


person netdjw    schedule 19.01.2014    source источник
comment
Поиск — ваш друг. Посмотрите здесь: stackoverflow.com/questions/2041575/   -  person The Blue Dog    schedule 19.01.2014
comment
да, и там используйте FROM <table> то, что я не хочу использовать   -  person netdjw    schedule 19.01.2014
comment
Итак, что вы пытаетесь сделать, если не хотите искать таблицу?   -  person The Blue Dog    schedule 19.01.2014
comment
Хм, вы хотите выбрать последние 30 дат во всех таблицах базы данных?   -  person Anshul Goyal    schedule 19.01.2014
comment
Не уверен, что вы можете перечислить такие дни с помощью MySQL. Вы должны создать для этого функцию: stackoverflow.com/questions/510012/   -  person sdespont    schedule 19.01.2014
comment
Я хочу вернуть только даты последних 30 дней.   -  person netdjw    schedule 19.01.2014


Ответы (2)


Я взломал это вместе из чужого кода, но, похоже, это работает:

SELECT DATE_FORMAT(m1, '%d %b %Y')
FROM (
SELECT SUBDATE( NOW() , INTERVAL 30 DAY) + INTERVAL m DAY AS m1
FROM (
select @rownum:=@rownum+1 as m from
(select 1 union select 2 union select 3 union select 4) t1,
(select 1 union select 2 union select 3 union select 4) t2,
(select 1 union select 2 union select 3 union select 4) t3,
(select 1 union select 2 union select 3 union select 4) t4,
(select @rownum:=-1) t0
) d1
) d2 
WHERE m1 <= now()
ORDER BY m1

Исходный код valex находится здесь:

Как получить список месяцев между две даты в mysql

person The Blue Dog    schedule 19.01.2014

Вы можете сделать это «явным» способом. То есть сгенерировать ряд чисел и вычислить дату:

select date(date_sub(now(), interval n.n day) as thedate
from (select 1 as n union all
      select 2 union all
      . . .
      select 30
     ) n
person Gordon Linoff    schedule 19.01.2014