Выбор всех записей из таблицы за прошлый месяц

AleksejVL

Новичок
Выбор всех записей из таблицы за прошлый месяц

В таблице имеется поле DDate (Тип date, по умолчанию 0000-00-00 ).
Подскажите пожалуйста как составить запрос чтобы выбрать все данные за прошлый месяц.
 

AleksejVL

Новичок
DDate>=DATE_ADD(CURRENT_DATE(),INTERVAL -30 DAY)
вот только до такого додумался, но оно период от текущего дня задает :(
 

AleksejVL

Новичок
Как вы мне нашего админа напоминаете :) который постоянно МАНы отправляет читать .... вместо того чтобы ответить на вопрос.
Пойду дальше мучаться.
 

alpine

Новичок
AleksejVL
Я тебе отвечу, не вопрос. Но как только тебе надо будет выбрать не за месяц а за прошлый год боюсь ты опять придешь спрашивать вместо того чтобы один раз разобраться.

-~{}~ 07.12.05 00:13:

А ты и сам кстати сказал что как с датами работать в mysql не знаешь. Может быть ты знаешь как работать с датами в PHP?
 

AleksejVL

Новичок
Думаю что по образцу это будет сделать намного проще.
Жаль что в русской инструкции нет снизу реальных примеров.
 

AleksejVL

Новичок
Хм... спасибо, будем пробовать, что получилось напишу, если кому то интересно...
 

alpine

Новичок
1.a)
[sql]
SELECT *
FROM table1
WHERE `date`
LIKE CONCAT( EXTRACT( YEAR
FROM NOW( ) ) , '-', EXTRACT(
MONTH FROM NOW( ) ) -1, '%' )
[/sql]
1.b)
[sql]
SELECT *
FROM table1
WHERE `date`
LIKE CONCAT( YEAR(CURRENT_DATE), '-', MONTH(CURRENT_DATE) -1, '%' )
[/sql]
2.a)
[sql]
SELECT *
FROM table1
WHERE `date`
BETWEEN CONCAT( EXTRACT( YEAR
FROM NOW( ) ) , '-', EXTRACT(
MONTH FROM NOW( ) ) -1, '-01' ) AND DATE_SUB( CONCAT( EXTRACT( YEAR
FROM NOW( ) ) , '-', EXTRACT(
MONTH FROM NOW( ) ) , '-01' ) , INTERVAL 1
DAY )
[/sql]
2.b)
[sql]
SELECT *
FROM table1
WHERE `date`
BETWEEN CONCAT( YEAR(CURRENT_DATE) , '-', MONTH(CURRENT_DATE) -1, '-01' ) AND DATE_SUB( CONCAT( YEAR(CURRENT_DATE) , '-', MONTH(CURRENT_DATE) , '-01' ) , INTERVAL 1
DAY )
[/sql]
 

AleksejVL

Новичок
Спасибо!.
Кстати для моей задачи самый первый вариант
SELECT * FROM table WHERE date LIKE '2005-06%'
подошел вообще идеально.

А последующие оба не работают, может быть версия MySQL не та?
Причем ни матюков ничего... просто молча не работает.
 

alpine

Новичок
AleksejVL
А у тебя в таблице записи есть с 2005-11-01 по 2005-11-30 ?
 

AleksejVL

Новичок
Автор оригинала: alpine
AleksejVL
А у тебя в таблице записи есть с 2005-11-01 по 2005-11-30 ?
Да, конечно есть записи, аж 139 штук.
Из уточненных вариантов
1.а не работает
1.б работает
2.а не работает
2.б работает
 
Сверху