Autor | Zpráva | ||
---|---|---|---|
Zacatecnik Profil * |
#1 · Zasláno: 5. 6. 2012, 19:11:31
Ahoj,
mám takový triviální dotaz. Jakým způsobem z mysql databáze vybrat data s podmínkou "date > NOW()". Když kouknu do db, tak datum je uloženo takto: (varchar) 1337724000 (ukládá se pomocí $datum_ktere_ulozim_do_db = strtotime('03. 06. 2012')). Lze i s takoto uloženým datem pracavat? Jak by měla vypadat podmínka, která by z db vytáhla jen ty položky které mají datum rovno nebo větší dnešnímu dni (hodiny a minuty nezohledňujeme)? Nějak se mi to nedaří, nic se mi nevrátí když použiju date > NOW() (a nebo musím databázi upravit tak, abych čas ukládal jako datetime?) Děkuji za reakce |
||
Joker Profil |
#2 · Zasláno: 5. 6. 2012, 19:30:06
Zacatecnik:
„Lze i s takoto uloženým datem pracavat?“ Špatně. Lepší by bylo to konvertovat na normální uložení data (DATETIME) |
||
Tori Profil |
#3 · Zasláno: 5. 6. 2012, 19:30:34
Zacatecnik:
V PHP třeba takhle: $sql = "SELECT ... WHERE `date` BETWEEN ".strtotime('00:00:00')." AND ".time();
„musím databázi upravit tak, abych čas ukládal jako datetime?“ Snadněji by se s těmi daty pak pracovalo, když budete chtít např. odečíst/přičíst interval, získat číslo měsíce/dne/dne v týdnu, apod. |
||
Majkl578 Profil |
Správným formátem pro uložení datumu (samotného, bez času) je typ DATE s formátem YYYY-MM-DD. Pokud máš možnost, bylo by asi vhodné zvážit změnu. V takovém případě by platilo řešení z tématu ze včera.
Pokud bys to změnit nemohl, pak by to přímo na úrovni SQL šlo takto: SELECT foo, bar FROM sometable WHERE FROM_UNIXTIME(foo) > CURDATE() |
||
Alphard Profil |
#5 · Zasláno: 5. 6. 2012, 19:51:39
„SELECT foo, bar FROM sometable WHERE FROM_UNIXTIME(foo) > CURDATE()“
Dovolím si upozornit, že pro velké tabulky by bylo lepší nevolat funkci na sloupec, ale porovnávat jednou dosazené číslo. |
||
Zacatecnik Profil * |
#6 · Zasláno: 5. 6. 2012, 20:07:14
ok, dekuju vam vsem. Nejlepsi asi bude venovat trochu case tomu, abych zmenil typ na DATE. Jeste jednou diky
|
||
Časová prodleva: 13 let
|
0