Autor Zpráva
Anonymní
Profil *
Zdravím, jak se "správně" pracuje s datumem u db? Nyní mám v databázi třeba "date" a typ INT a potom datum ukládám pomocí:
mktime(0, 0, 0, date("n"), date("j"), date("Y"));
. Ale vetšinou nevím jak řešit určité věci. Poslední věc, kterou "nevím" jak udělat je to, že mám v db id, incoming_users, order, date a já potřebuju z databáze vytáhnout záznamy staré 1měsíc a porovnat je. Jak pracujete s datem vy?
Sir Tom
Profil
Anonymní:
Také zdravím,

ukládat datum jako INT není dobré řešení. V MySQL existují datové typy sloužící přímo k ukládání dat(umů)/časů: www.junext.net/mysql/#datove_typy nebo www.linuxsoft.cz/article.php?id_article=776.

Pokud použiješ takový datový typ, tak klidně pak můžeš sestrojit dotaz obsahující ... WHERE date > 'mojeZadaneDatumVeSpravnemFormatu' a řadit pak klasicky přes ORDER BY date.
Anonymní
Profil *
Díky, přečtu si články.
Anonymní
Profil *
Bylo by možné zjístit data z db podle nýnějšího formátování? Potřebuju zjístit data z aktuálního měsíce.
Tori
Profil
V PHP si vyrobit datumy jako celé číslo (00:00 v první den tohoto a následujícího měsíce) a v SQL porovnávat operátorem BETWEEN.
Anonymní
Profil *
A mohl by mi někdo pomoc seskládat to celé číslo? Já nevím jak poskládám číslo třeba mezi 1.11 - 30.11 aby se to poslední číslo měnilo podle aktuálního měsíce. Popřípadě, bylo by lehčí to udělat podle dokumentů, co mi poradil Sir Tom ? Díky.
Tori
Profil
Se správným dat.typem to bude určitě snazší, stačí použít
mysql_query("SELECT * FROM tabulka WHERE MONTH(datum) = " . date('n'));

S časovým razítkem by to vypadalo např. takhle:
$od = mktime(0, 0, 0, date('n'), 1, date('Y'));
$do = mktime(0, 0, 0, date('n')+1, 1, date('Y')) - 1;
if ($od === false || $do === false) {
  echo 'chybné datum';
} else {
  mysql_query("SELECT * FROM tabulka WHERE datum BETWEEN $od AND $do");
}
Aleš Janda
Profil
Jen technická:

$od = mktime(0, 0, 0, date('n'), 1, date('Y'));

Není dobré spoléhat se na to, že se celý skript vykoná v jednom zanedbatelném okamžiku. První date() se může provést v jiný den než druhé date() (nebo naopak) a pak vznikne nesmysl. Není to moc časté, ale při větším trafficu se to stává. Je lepší opravdu zaručit provedení v jednom okamžiku:

$cas = time();
$od = mktime(0, 0, 0, date('n', $cas), 1, date('Y', $cas));

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