Autor | Zpráva | ||
---|---|---|---|
mahdy Profil |
#1 · Zasláno: 22. 2. 2010, 17:39:40
zdravím lidi, mám problém s seřazním záznamů z mysql databáze podle datumu a času.
V DBF (tabulce) mám u každého záznamu sloupec čas a datum. čas je ve tvaru konstanty a datum Y-m-d. Potřebuju tytop data vypsat dle datumu a času vzestupně. Když jsem použil: mysql_query('SELECT * from predmety WHERE stav="běží" AND typ<>"bazar" ORDER BY datum, cas'); Tak mi to vypisovalo uplně nesmyslně. Prostě aby to nejdřív bralo v potaz datum a až potom čas v tom dni Budu rád za každý nápad. |
||
Taps Profil |
#2 · Zasláno: 22. 2. 2010, 18:37:05
mahdy:
zkoušel jsi to i takto ? mysql_query('SELECT * from predmety WHERE stav="běží" AND typ<>"bazar" ORDER BY datum DESC, cas DESC'); |
||
mahdy Profil |
#3 · Zasláno: 22. 2. 2010, 18:59:57
Taps:
Bohužel ne, on vezme ten cas, ale datum uz ignoruje.. Cas mam napr: 65000 (je v sekundach) jako INT datum ve tvaru Y-m-d |
||
AM_ Profil |
#4 · Zasláno: 22. 2. 2010, 19:04:06
mahdy:
„datum ve tvaru Y-m-d“ jako co? jako VARCHAR nebo jako DATE? Vidím to na typickou začátečnickou chybu, "když se do VARCHAR dá zapsat prakticky všechno, proč vůbec používat jiné datové typy?" Datum a čas by měly být v jednom sloupci typu DATETIME, dělit to na dva sloupce a ty ještě k tomu zapisovat takhle šíleně není dobrý nápad. |
||
mahdy Profil |
#5 · Zasláno: 22. 2. 2010, 19:17:11
ja to vím že se spravne musi pouzit DATETIME, ale to já nemůžu (z principu)
Datum je typu date a čas int |
||
Keeehi Profil |
#6 · Zasláno: 22. 2. 2010, 19:28:10
mahdy:
I když je to dosti nestandardní, výše vámi uvedený uvedený kód by měl přesto fungovat. „ja to vím že se spravne musi pouzit DATETIME, ale to já nemůžu (z principu)“ Toto vůbec nechápu. Můžete napsat konkrétní důvod, co vám v tom brání? |
||
AM_ Profil |
#7 · Zasláno: 22. 2. 2010, 19:31:02
mahdy:
„ale to já nemůžu (z principu)“ z jakého principu? náboženské důvody? „a čas int“ tak alespoň ať je ten čas TIME, když už to nemůže být v jednom sloupci „Bohužel ne, on vezme ten cas, ale datum uz ignoruje..“ O tom dost silně pochybuji, řazení dle data funguje normálně. Zkus si to seřadit třeba v myAdminu. Jedině je snad možné, že máš data blbě uložená. Jinak bych asi musel vidět živou ukázku. |
||
mahdy Profil |
#8 · Zasláno: 22. 2. 2010, 19:33:31
AM:
Time být nemůže když je to konstanta. No právě mě to taky přijde divný že to ignoruje, ale proste je to tak |
||
Keeehi Profil |
#9 · Zasláno: 22. 2. 2010, 19:37:11
mahdy:
Když je to tedy konstanta, to znamená, že je pořád stejná -> Nemůžeš se divit, že jí to "přehlíží". Ono když jsou všechny hodnoty stejné, tak se podle nich dost těžko řadí ;-) |
||
mahdy Profil |
#10 · Zasláno: 22. 2. 2010, 19:40:03
Keeehi:
ale blbost! Je to proste datovy typ INT s ruznyma hodnotama |
||
nightfish Profil |
#11 · Zasláno: 22. 2. 2010, 19:42:43
mahdy:
„No právě mě to taky přijde divný že to ignoruje, ale proste je to tak“ pošli dump pár řádků z tabulky |
||
mahdy Profil |
#12 · Zasláno: 22. 2. 2010, 20:00:12
tak jsem si to zkusil vypsat primo v myadminu a v poradku, v php to dela hapry
vypsalo to takhle: 16.2. 79000 17.2. 82830 20.2. 82734 19.2 80200 Proč? proč ten posledni radek takto? vzdyt ten ma byt o jeden radek vys. (Nejdriv radit dle dataa, pak cas) |
||
AM_ Profil |
#13 · Zasláno: 22. 2. 2010, 21:31:21
mahdy:
„Time být nemůže když je to konstanta.“ Safra jaká konstanta? 79000 je konstanta a 21:11 konstanta není? Konstanta je údaj který se v čase nemění, co to má společného s formátem zápisu čísla; řekl bych, že spíš jednak neumíš terminologii a jednak SQL. [#12] mahdy Ukaž SQL dotaz, kterým jsi to vypsal. To nevypadá úplně jako formát Y-m-d. |
||
Časová prodleva: 14 let
|
0