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

C++ JAVA
Post Reply
novakabg
Турист
Турист
Posts: 337
Joined: Fri May 13, 2016 12:29 pm
Contact:

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

Post by novakabg » Mon Sep 10, 2018 1:06 pm

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

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

Примерно: Пица 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 нещо не ми се получава на мен специално. :)

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

User avatar
anonimen
Web-tourist
Web-tourist
Posts: 1534
Joined: Mon Jun 11, 2012 6:07 pm
Answers: 163
Location: Parse error: unexpected "}" in /home/index.php on line 26

Post by anonimen » Mon Sep 10, 2018 1:20 pm

Това сравнение:

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

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

Тук човекът прави същото, но с 10 дни. Виж дали няма да ти свърши работа. И забележи, че ползва оператора "<", докато на теб вероятно ти трябва "<=".
https://stackoverflow.com/questions/365 ... s/36545295

novakabg
Турист
Турист
Posts: 337
Joined: Fri May 13, 2016 12:29 pm
Contact:

Post by novakabg » Mon Sep 10, 2018 2:01 pm

Нещо не се получава прочем, изкарва и други резултати :cry:

Code: Select all

	$sql = "SELECT o.pizza_id , CONCAT&#40;o.firstname&#41; 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&#40;o.deliverytime&#41; = DATE&#40;'" . date&#40;"Y-m-d", strtotime&#40;"-2 day"&#41;&#41; . "'&#41; ORDER BY o.pizza_id  DESC LIMIT 0,20";

User avatar
anonimen
Web-tourist
Web-tourist
Posts: 1534
Joined: Mon Jun 11, 2012 6:07 pm
Answers: 163
Location: Parse error: unexpected "}" in /home/index.php on line 26

Post by anonimen » Mon Sep 10, 2018 3:21 pm

Направи сметките с датата в заявката. Т.е. не с php, a с SQL.

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

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

novakabg
Турист
Турист
Posts: 337
Joined: Fri May 13, 2016 12:29 pm
Contact:

Post by novakabg » Mon Sep 10, 2018 6:25 pm

Просто не мърда :lol:

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

Code: Select all

SELECT * FROM pr_pizza  WHERE DATE&#40;deliverytime&#41; = DATE_SUB&#40;CURDATE&#40;&#41;, INTERVAL 7 DAY&#41; ORDER BY o.order_id DESC LIMIT 0,20

User avatar
anonimen
Web-tourist
Web-tourist
Posts: 1534
Joined: Mon Jun 11, 2012 6:07 pm
Answers: 163
Location: Parse error: unexpected "}" in /home/index.php on line 26

Post by anonimen » Tue Sep 11, 2018 7:21 am

https://www.w3schools.com/sql/trymysql. ... ysql_date4

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

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

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

novakabg
Турист
Турист
Posts: 337
Joined: Fri May 13, 2016 12:29 pm
Contact:

Post by novakabg » Wed Sep 12, 2018 1:11 pm

Много благодаря на @anonimen за отговорите много мило, извинявам се отново че не съм дал код и структура със записи!

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

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

Post Reply