Přetypování řetězce na datum
16 příspěvků
Archiv diskusního fóra
Fórum je uzavřené a slouží pouze ke čtení. Některé informace mohou být zastaralé.
-
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.