Mám řetězec, třeba 2006-1-12 (12. ledna tohoto roku) a potřeboval bych podle něho najít v tabulce včechny záznamy, které mu odpovídají. Datumy jsou v tabulce jako typ DATE, tedy 2006-01-12.
Když je porovnám normálně přes LIKE tak to nenalezne shodu. Potřeboval bych aby ten řetězec chápal SQL jako typu DATE. Jak na to?
P.S. Jak v PHP udělat z řetězce 2006-1-12 řetězec 2006-01-12 vím.
mno, pokud jsou DATE a ne DATETIME, tak musí jít
WHERE datum = '2006-01-12'
Ale on ten řetězec není '2006-01-12', ale '2006-1-12'. V tom to právě vězí.
2stip:
>>P .S. Jak v PHP udělat z řetězce 2006-1-12 řetězec 2006-01-12 vím.
No to sem napsal, a co jako?
no tak si ho převeď na ten formát s nulama, když víš jak a pak to porovnej....
na tohle like nezabere..
<?
function nuly($datum){
$pole = explode('-',$datum);
return date("Y-m-d", mktime(0,0,0,$pole[2],$pole[1],$pole[0]));
}
mysql_query ("SELECT x FROM y WHERE datum = '". nuly('2006-01-12') ."');
?>
Jo, tak to samozřejmě dělám, ale o to nejde. Proto to tam výslovně píšu. Jde o to jak předat řetězec v SQL aby ho chápal jako datum.
když nepoužiješ LIKE, ale normální "=", tak to půjde, tak to dělám už pár let a zatím žádný problém :-) MySQL ví, že ten sloupec je DATE a tak si porovnávaný řetězec zpracuje jak potřebuje...
No tak jo věřim. Mimochodem ta tvoje funkce dává jenom 31.prosince 1969 :o) Nevim čim to je.
Tak jsem to zkusil normálně s tim = a vono to fakt funguje. Tak dík, já sem to původně zkoušel asi nějak blbě. Sem myslel, že se musí používat takový nějaký ty funkce jako DATE_FORMAT a ono né. Tak to je super.
mě ta fce fachala, vždyť jsem ji testoval... no, a pořád mi jde... :-?
jinak, mě můžeš věřit :-D ;-)
Mě už taky, jenom nevim, proč níže uvedené vypíše:
1969-12-31
2006-12-01
Sem si myslel, že by to mělo být stejné:
<?php
function nuly($datum){
$pole = explode('-',$datum);
return date("Y-m-d", mktime(0,0,0,$pole[2],$pole[1],$pole[0]));
}
echo date("Y-m-d", mktime(0,0,0,2006,1,12));
echo "<br />";
echo nuly('2006-1-12');
?>
asi si to chce precist navod:
mktime(hodina, minuta, sekunda, mesic, den, rok);
pokud to napises jinak, tak pochopitelne dostanes blud.
No jo, dyt ja to tam pisu obracene :o) a to sem si na to schvalne daval pozor a stejne ...
on ten mktime() je taky pekne zmateny, navic, kdyz napises 33 den, tak ti pripocita mesic, takze se pak tezko hledaji chyby, zvlast, kdyz to zkousis na datech jako 1.1.