Изваждане на резултати за дата от вписано поле в базата данн

novakabg

Registered
Здравейте, имам нужда от малко помощ за една задачка която се мъча да направя.

Имам в базата данни поръчки и всяка поръчка си има ръчно зададена дата за пращане.

Примерно: Пица 1 > 19.09.2018

Полето се казва: deliverytime


Опитвам се да изкарам една информация забавени Пици за последните 30 дена.

Сега изкаравам така но това изкарва за точна дата и то ще е само един резултат или два за тази дата която те самите съдържат.

FROM `pr_pizza` o WHERE o.order_status_id > '0' AND DATE(o.deliverytime) = DATE('" . date("Y-m-d", strtotime("-2 day")) . "') ORDER BY o.pizza_id DESC LIMIT 0,20"

И така скъпи приятели иска ми се да измисля нещо но не се получава, дали с DATE_SUB и INTERVAL нещо не ми се получава на мен специално. :)

Благодаря предварително!
 
Това сравнение:

[sql]DATE(o.deliverytime) = DATE('" . date("Y-m-d", strtotime("-2 day")) . "') [/sql]

проверява за еднакви дати. Вероятно ти трябва "<=", т.е. дати, които са преди 2 дни или по-рано.

Тук човекът прави същото, но с 10 дни. Виж дали няма да ти свърши работа. И забележи, че ползва оператора "<", докато на теб вероятно ти трябва "<=".
https://stackoverflow.com/questions/36545152/mysql-select-all-the-entries-older-than-10-days/36545295
 
Нещо не се получава прочем, изкарва и други резултати :cry:

Код:
	$sql = "SELECT o.pizza_id , CONCAT(o.firstname) AS customer, o.shipping_code, o.total, o.currency_code, o.status, o.currency_value, o.date_added, o.telephone, o.deliverytime
		FROM `pr_pizza` o WHERE o.status > '0' AND DATE(o.deliverytime) = DATE('" . date("Y-m-d", strtotime("-2 day")) . "') ORDER BY o.pizza_id  DESC LIMIT 0,20";
 
Направи сметките с датата в заявката. Т.е. не с php, a с SQL.

И като за начало селектирай само полето с датата + някакво id, без други полета, без други условия в where освен сравнението на датите и без php.
Така ще имаш много по-проста заявка за работа, и по-лесно ще видиш къде бъркаш.

И като премахнеш php-частта от заявката, ще можеш да я тестваш отделно, например в phpmyadmin. И дай скрийншот на заявката с резултата от нея в phpmyadmin, защото изглежда странно при правилно условие да получаваш грешни резултати.
 
Просто не мърда :lol:

Ето така пробвах, но резултата е същият.

Код:
SELECT * FROM pr_pizza  WHERE DATE(deliverytime) = DATE_SUB(CURDATE(), INTERVAL 7 DAY) ORDER BY o.order_id DESC LIMIT 0,20
 
https://www.w3schools.com/sql/trymysql.asp?filename=trysql_func_mysql_date4

Изпълни тази заявка:

[sql]SELECT * FROM Orders
WHERE DATE(OrderDate) <= DATE_SUB(CURDATE(), INTERVAL 10 YEAR)
ORDER BY OrderDate DESC [/sql]

За да се увериш, че работи. След това дай в http://sqlfiddle.com/ примерна таблица с 4-5 реда от твоята БД със заявката, която изпълняваш, и сподели линк, за да видим защо не става.
 
Много благодаря на @anonimen за отговорите много мило, извинявам се отново че не съм дал код и структура със записи!

Но благодаря и на @joTunkiq, той оправи проблема след като видя кода и структурата.

Точката я давам на @anonimen един вид е жест от страна на @joTunkiq защото той не участва в този пост и няма как да дам точката, благодаря на двамата много мило радвам се че има още сериозни хора и най-вече добри!
 

Горе