Заявка с BETWEEN

Msecurity

Registered
Здравейте колеги,
имам малък проблем с заявките от дата до дата
ако филтрирам до 01.05.2018 до 08.05.2018 - всичко работи, но ако иска да филтрирам от 15.04.2018 до 03.05.2018 ... няма резултати или не са коректни ...
Датите записание в базата данни са в формат "01.01.2018"
Ето и заявката която използвам:

[sql]... a.request_added BETWEEN "'.$_GET['startdate'].'" AND "'.$_GET['enddate'].'"[/sql]
или по нагледно
[sql]a.request_added BETWEEN "15.04.2018" AND "03.05.2018"[/sql]
 
Сигурно не смята правилно заради формата на датите и не ги разбира като дати:

Код:
DATE_FORMAT(STR_TO_DATE('15.04.2018', '%d.%m.%Y'), '%Y-%m-%d');

Така може да ги преубразуваш във формата, с който DATE работи по default.

Пример:
Код:
a.request_added 
BETWEEN 
    DATE_FORMAT(STR_TO_DATE('15.04.2018', '%d.%m.%Y'), '%Y-%m-%d') 
AND 
    DATE_FORMAT(STR_TO_DATE('03.05.2018', '%d.%m.%Y'), '%Y-%m-%d')

Но може би ще е по-лесно да смениш формата на датите, които записваш да са Year-Month-Date.
 
Дам, но дори и да ги преобразувам колоната "request_added" си остава в предният форма, не трябва ли и тя да се преобразува по време на заявката?
 
Msecurity каза:
Дам, но дори и да ги преобразувам колоната "request_added" си остава в предният форма, не трябва ли и тя да се преобразува по време на заявката?

Ох, да и нея. А сега забелязах, че двете дати в BETWEEN идват от GET там може дирекнтно да си смениш URL-а и да ги подаваш като 2018-04-15 :)

Така ще стане само:

Код:
DATE_FORMAT(STR_TO_DATE(a.request_added, '%d.%m.%Y'), '%Y-%m-%d')  
BETWEEN
     "'.$_GET['startdate'].'"
 AND 
    "'.$_GET['enddate'].'"

Само да отбележа, че по никакъв начин не escape-ваш $_GET подадена информация, което може да доведе от SQL injection и супер много проблеми.
 
за това няма проблем, системата е защитена чрез друга система за сигурност , която следи всичко и филтрира GET и POST, но това вече е друга тема :D
пп: сега ще пробвам както в примера който даде и ще пиша какво е станало :)
 
Msecurity каза:
за това няма проблем, системата е защитена чрез друга система за сигурност , която следи всичко и филтрира GET и POST, но това вече е друга тема :D
пп: сега ще пробвам както в примера който даде и ще пиша какво е станало :)

Система, която следи гет и пост и филтрира/променя директно глобалните масиви ($_GET и $_POST) е лошо дизайната система. :)
 
Стана така, благодаря много +1 :)
пп: за системата за сигурност ако искаш драсни на ЛС да ти обесня :)
 

Горе