Autor | Zpráva | ||
---|---|---|---|
okolojsoucí Profil |
#1 · Zasláno: 25. 2. 2014, 18:24:31
Zdravím,
v databázi mám následující tabulku | id | datum | hodnota | ve sloupečku datum mám uložený datum ve tvaru 2014-02-24 18:00:32 tzn. timestamp. Rád bych se zeptal jestli je možno vybrat všechny data která obsahují datum pouze 2014-02-24 bez ohledu na čas. Děkuji |
||
janbarasek Profil |
#2 · Zasláno: 25. 2. 2014, 18:32:53
okolojsoucí:
Pokud se jedná o MySql, tak bys mohl určitě v SQL příkazu uvést parametr like a určit, že se má hledat hodnota "2014-02-24" ve sloupečku "datum". Parametr like hledá vždy přesný výskyt nějakého řetězce v čemkoli, myslím že v tomto případě je to ideální řešení, protože to je snadno přizpůsobitelné a měnitelné. Jinak obecně doporučuji čas ukládat jako Universal time (už jsem o tom psal), lepší se s tím pracuje (co se týče rychlosti) a navíc to může být uloženo jako Integer, což šetří výkon a paměť. |
||
abc Profil |
LIKE bude imho pomalejší než např:
SELECT * FROM tabulka WHERE CAST(datum AS DATE) = '2014-02-24' |
||
okolojsoucí Profil |
#4 · Zasláno: 25. 2. 2014, 18:39:02
janbarasek:
Díky za radu, ale mě se s time() blbě pracuje, navíc svou aplikaci již mám rozdělanou. abc: Díky ti! Pomohlo. |
||
Tori Profil |
nebo
WHERE DATE(datum) = '2014-02-24' Timestamp/datetime je správná volba.
janbarasek: „doporučuji čas ukládat jako Universal time (už jsem o tom psal)“ Zaujala mě tahle věta: „[Obecné vlastnosti tohoto zápisu:] Je v desítkové soustavě, takže je i pro lidi dobře čitelné.“ - to myslíte vážně, že pro někoho je 1393349925 čitelnější, než 2014-02-24 18:39:00 ? Případně zjištění rozdílu ve dnech jako SELECT (1393349925 - datum1) / 86400 místo SELECT DATEDIFF(datum, CURRENT_DATE) ?
Úspora místa na disku je taky relativní - INT se sice ukládá vždy jako 4bajtové zatímco DATETIME jako 8bajtové. Ale pokud mi stačí typ DATE nebo TIME, tak ty zaberou 3 bajty. |
||
janbarasek Profil |
#6 · Zasláno: 25. 2. 2014, 18:48:10
okolojsoucí:
„Díky za radu, ale mě se s time() blbě pracuje“ Je to věc názoru, time() si můžeš kdykoli přeformátovat do jiného tvaru, proto ho mám tak rád. Tori: „to myslíte vážně, že pro někoho je 1393349925 čitelnější, než 2014-02-24 18:39:00?“ To ne, bylo to myšlené tak, že číslo v desítkové soustavě je lépe čitelné, než ve dvojkové soustavě. Navíc se pak lepší počítá rozdíl nějakých 2 datů (protože to je jako číslo, takže neřešíš mnoho problémů s tím spojených). |
||
Kajman Profil |
#7 · Zasláno: 25. 2. 2014, 20:19:38
okolojsoucí:
„Rád bych se zeptal jestli je možno vybrat všechny data která obsahují datum pouze 2014-02-24 bez ohledu na čas.“ Nejlépe where datum between '2014-02-24' and '2014-02-24 23:59:59' Verze s cast a date funkcemi nad sloupcem zničí možnost využít případného indexu nad tím sloupcem. |
||
Časová prodleva: 10 let
|
0