Autor | Zpráva | ||
---|---|---|---|
Anonymní Profil * |
#1 · Zasláno: 16. 11. 2011, 08:51:27
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")); |
||
Sir Tom Profil |
#2 · Zasláno: 16. 11. 2011, 09:08:57
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 * |
#3 · Zasláno: 16. 11. 2011, 10:45:13
Díky, přečtu si články.
|
||
Časová prodleva: 4 dny
|
|||
Anonymní Profil * |
#4 · Zasláno: 20. 11. 2011, 01:50:37
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 |
#5 · Zasláno: 20. 11. 2011, 08:46:10
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 * |
#6 · Zasláno: 20. 11. 2011, 10:51:43
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 |
#7 · Zasláno: 20. 11. 2011, 11:33:30
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 |
#8 · Zasláno: 20. 11. 2011, 18:33:37
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)); |
||
Časová prodleva: 12 let
|
0