Autor Zpráva
lenoch
Profil *
Ahoj. Tahám z databáze spousty hodnot, které porovnávám v php (není to žádné omezení hodnot ani žádná jiná věc která by byla lehčí řešit v databázi třeba jen pomocí where). Hodnoty jsou typu string (ale to jen kvůli mysql driveru v php) - v databázi varchar, int a datetime. Pokud porovnávám datum a čas s datem a časem přesně ve formátu ve kterém je uložen v mysql (2001-12-12 12:12:12 < 2001-12-12 12:12:14), je potřeba z tohoto řetězce vyrobit "datumový typ" nebo to stačí porovnávat jako řetězec (z toho důvodu že je datum ve formátu od nejvyšší hodnoty po nejnižší a proto by teoreticky neměl být problém)?
Darker
Profil
A jak by sis porovnávání jako řetězec představoval? Pokud bys rozložil datum na jednotlivá čísla (explode) a pak porovnával rok, měsíc, den atd, ano, to by fungovalo.
Nicméně si nemyslím že kód
"2001-12-12 12:12:12">"2001-12-12 12:12:14"
dopadne šťastně.
petr 6
Profil
Darker:
Pokud bys rozložil datum na jednotlivá čísla (explode) a pak porovnával rok, měsíc, den atd, ano, to by fungovalo.
Jednodušší by bylo odstranit z data všechny nečíselné znaky a pak porovnávat
20011212121212>20011212121214

Toto určitě fungovat bude (za předpokladu, že měsíc, den, hodina, minuta i sekunda budou vždy dvojmístné - 00, 01 apod.)

Nebo lépe
strtotime("2001-12-12 12:12:12")>strtotime("2001-12-12 12:12:14")
Keeehi
Profil
http://cz.php.net/manual/en/function.strcmp.php a mělo by to být v pohodě
lenoch
Profil *
Proč by "2001-12-12 12:12:12">"2001-12-12 12:12:14" nemělo dopadnout šťastně? Pokud bych to porovnával jako číslo, tak se bere hodnota, takhle se to jen bude porovnávat znak po znaku a pokud budou řetězce stejně dlouhé, tak to musí projít ne? Nebo je v tom nějaké úskalí?
Keeehi
Profil
lenoch:
Nejjistější ne to bude použít přímo vytvořenou funkci. Jak to prosté porovnání dvou řetězců funguje si můžete sám vyzkoušet. A pak můžete doufat, že to tak zůstane i v dalších verzích php, případně v jiném kódování. U té funkce je podle mě pravděpodobnost větší, že bude fungovat stejně i nadále.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0