2016-08-25 1 views
-4

Использование PhpMyAdmin, я это предложение работы:Как отфильтровать результаты, используя первый и последний день предыдущего месяца в SQL

SELECT id_order as Ref FROM t_orders WHERE DATE(invoice_date) = CURDATE() 

Теперь я хочу reemplace «текущая дата» (CurDate) в первый день предыдущего месяца.


Ответ Ankit Баджпаи решить мою проблему (спасибо):

SELECT id_order as Ref FROM t_orders WHERE DATE(invoice_date) >= concat(date_format(LAST_DAY(now() - interval 1 month),'%Y-%m-'),'01'); 
+5

Вы используете MySQL или SQL Server? – NickyvV

+0

Ваш код должен работать ... это не дает вам ожидаемых результатов? Если вы не можете опубликовать некоторые данные теста и ожидаемые результаты? – scsimon

+0

Посмотрите теги и что OP связано с @Strawberry – scsimon

ответ

-1

Для MS SQL Server:

DECLARE @firstDayOfLastMonth DATETIME = DATEADD(MONTH, -1, DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0)) 
DECLARE @lastDayOfLastMonth DATETIME = DATEADD(DAY, -1, DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0)) 

SELECT @firstDayOfLastMonth; 
SELECT @lastDayOfLastMonth; 
-2

Try следующий запрос: -

SELECT id_order as Ref FROM t_orders WHERE DATE(invoice_date) >= concat(date_format(LAST_DAY(now() - interval 1 month),'%Y-%m-'),'01'); 
+0

Это дает те же результаты, что и OP, «DATEADD (MONTH, DATEDIFF (MONTH, 0, GETDATE()) - 1, 0), но с меньшими функциями. Я что-то упускаю? – scsimon

+0

Я получил ошибку # 1064 «что-то не так в вашем синтаксисе» –

+0

СПАСИБО ВАС. Он работает, вы не можете представить себе счастье, которое я чувствую .. :-). BTW, я проголосовал за ваш ответ, но система сказала, что моя репутация выше, это не ценно. –

-1

После прочтения ... вы хотите весь месяц, o в предыдущем месяце. Вы можете сделать это:

SELECT id_order as Ref FROM t_orders 
WHERE 
DATE(invoice_date) >= DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE())-1, 0) 
AND 
DATE(invoice_date) <= DATEADD(month, DATEDIFF(MONTH, 0, GETDATE()), -1) 

ИЛИ

SELECT id_order as Ref FROM t_orders 
WHERE 
MONTH(DATE(invoice_date)) = MONTH(DATEADD(MONTH,-1,GETDATE())) 
+0

Помните, что я хочу использовать с PhpMyadmin. Ваш первый код возвращает: 1582 Неправильный счетчик параметров в вызове функции native 'dateif И вторая функция «1305 DATEADD не существует» –

+0

Вы отметили SQL-сервер и связаны с почтой SQL-сервера. Все, кто отвечал, сделали это с учетом этого, чтобы вы лучше поставили свой вопрос. – scsimon

Смежные вопросы