» »

MySQL BETWEEN dates?

MySQL BETWEEN dates?

Housy ::

Zdravo,

rad bi samo vprašal, kako se pravilno naredi poizvedba, če želimo izpisati npr. od nekega pa do nekega datuma. Nikakor mi ne uspe pravilno napisati poizvedbe za moj preprosti iskalnik in bi prosil za pomoč.

Trenutno imam napisano takole:

$search_sql = "SELECT a.*, b.ime_artikla
               FROM prevzemi a, artikli b
               WHERE a.id_artikla = b.id_artikla
               BETWEEN a.datum = '".mysql_real_escape_string($_POST["oddatuma"])."'
               AND a.datum = '".mysql_real_escape_string($_POST["dodatuma"])."'                   
               ORDER BY a.id_prevzema DESC";


Datum imam shranjen v obliki 3.12.2010.

Javi mi spodnjo napako, sem že iskal, ampak se ne najdem prave rešitve.

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '= '2.10.2005' AND a.datum = '3.12.2010' ' at line 4


Lp in hvala,
Housy

Housy ::

Nisem našel rešitve!

$search_sql = "SELECT a.*, b.ime_artikla
                   FROM prevzemi a, artikli b
                   WHERE a.datum
                   BETWEEN '".mysql_real_escape_string($_POST["oddatuma"])."'
                   AND '".mysql_real_escape_string($_POST["dodatuma"])."'
                   AND a.id_artikla = b.id_artikla
                   ORDER BY a.id_prevzema DESC";


Tudi ta poizvedba ne deluje, sicer ne javi nobene napake, seveda ne dobim nobenga rezultata, tako da ne vem kaj delam narobe.

Zgodovina sprememb…

  • spremenil: Housy ()

dice7 ::

Format datuma je YYYY-MM-DD [HH:MM:SS] če ti ne bo delalo

Housy ::

Ne dela!!!

Mi je prvo vrglo ven rezultat, ki sem ga želel, zdaj pa kr ne, tako da sem prehitro rekel, da deluje.

Ne dobim sicer nobene napake, seveda tudi nobenega rezultata.

Je query sploh pravilno postavljen? Kako lahko shranim datum v takšni obliki dice7? Misliš, da je kriv datum? Ker jaz rabim samo datum in nič druga, ne rabim še ure zraven.

Lp in hvala,
Housy

Zgodovina sprememb…

  • spremenil: Housy ()

keworkian ::

Probaj tole, mogoce bo celo delal
function lepsidatum($date)
{
list($m,$d,$y) = explode('.', $date);
return date('d.m.Y',mktime(0,0,0,$m,$d,$y));
}

$t1 = lepsidatum($_POST['oddatuma']);
$t2 = lepsidatum($_POST['dodatuma']);

$search_sql = "SELECT a.*, b.ime_artikla 
FROM prevzemi a, artikli b
JOIN artikli b ON a.id_artikla = b.id_artikla 
WHERE LEFT(a.datum,10) 
BETWEEN '".mysql_real_escape_string($t1)."'
AND '".mysql_real_escape_string($t2)."'
ORDER BY a.id_prevzema DESC";
Obscenities in B-Flat

Zgodovina sprememb…

Ziga Dolhar ::

Kakšen je tip polja, v katerega shranjuješ datum?
https://dolhar.si/

Housy ::

Knight, tudi tvoja metoda mi ne deluje.

Javi mi tole -> "Not unique table/alias: 'b'"

Ziga Dolhar, tip polja je nastavljen kar na TEXT.

Housy

Zgodovina sprememb…

  • spremenil: Housy ()

Poldi112 ::

No, potem imaš pa problem :)
Where all think alike, no one thinks very much.
Walter Lippmann, leta 1922, o predpogoju za demokracijo.

Housy ::

Sej ni problem, lahko spremenim tud na drugi tip, saj sem skripto komaj začel pisat in pač testiram. Problem bi bil, če bi imel že ogromno zapisov.

Torej mora bit tip DATE predvidevam in pol bi naj delalo al kako? =D

Lp, Housy

Ziga Dolhar ::

"Datumske" funkcije najbolje delujejo na datumskih poljih, da... ;-).

Na vprašanja je včasih lažje odgovoriti z vprašanjem kot z odgovorom :).
https://dolhar.si/

keworkian ::

Housy je izjavil:

Knight, tudi tvoja metoda mi ne deluje.

Javi mi tole -> "Not unique table/alias: 'b'"

Ziga Dolhar, tip polja je nastavljen kar na TEXT.

Housy



Ne dela ti zato, ker sem slampasto napisal, se enkrat poglej FROM stavek, pa umakni tisti zadnji del, bi moralo delat.
Obscenities in B-Flat

Housy ::

Evo, zdaj pa res dela!

Je ratalo hehe :D

Tud polje datum je sedaj tipa DATE, torej je datum shranjen v obliki 2010-12-3.

Uporabil sem pa tole kodo, če bo kdo slučajno rabil:

$search_sql = "SELECT a.*,
	                      b.ime_artikla,
	                      AVG(a.cena) AS povprecje,
	                      SUM(a.kvantiteta) AS quantity
	                   FROM prevzemi a, artikli b
	                   WHERE a.datum
	                   BETWEEN '".mysql_real_escape_string($_POST["oddatuma"])."'
	                   AND '".mysql_real_escape_string($_POST["oddatuma"])."'
	                   AND a.id_artikla = '".mysql_real_escape_string($_POST["id_artikla"])."'
	                   AND a.id_artikla = b.id_artikla
	                   GROUP BY a.id_artikla";


Hvala vsem za pomoč.

Lp, Housy

Zgodovina sprememb…

  • spremenil: Housy ()


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Vdor v MySQL.com z vrivanjem SQL

Oddelek: Novice / Varnost
158518 (6396) techfreak :)
»

Zaščita pred SQL injection - user?

Oddelek: Izdelava spletišč
231970 (1398) techfreak :)
»

PHP + MySQL excel export pomoč?

Oddelek: Izdelava spletišč
121497 (1344) sumoborac
»

MySQL Query Vprašanje

Oddelek: Izdelava spletišč
153228 (2993) overlord_tm
»

[php] Knjiga gostov

Oddelek: Izdelava spletišč
293172 (2375) darix

Več podobnih tem