Avko |
14.07.2017 10:52 |
Predmet:ORDER BY [uvjet] vrijeme ASC, [uvijet] vrijeme DESC
PreuzmiIzvorni kôd (Text):CREATE TABLE mojaTabla
(
kolona1 TEXT
, kolona2 TEXT
)
GO
INSERT mojaTabla (kolona1,kolona2) VALUES ('jabuka', '22:35')
INSERT mojaTabla (kolona1,kolona2) VALUES ('jabuka', '01:35')
INSERT mojaTabla (kolona1,kolona2) VALUES ('kruska', '12:35')
INSERT mojaTabla (kolona1,kolona2) VALUES ('kruska', '21:35')
ovo zelim:
voce vrijeme
======== =========
kruska 12:35
kruska 21:35
jabuka 22:35
jabuka 01:35
ORDER BY bi trebao izgledati ovako:
SELECT voce, TIME(STR_TO_DATE(mojaTabla.vrijeme, '%H:%i')) as vrijeme
FROM mojaTabla
ORDER BY
(CASE WHEN vrijeme < '02:00' then mojaTabla.vrijeme end) ASC,
(CASE WHEN vrijeme > '02:00' then mojaTabla.vrijeme END) DESC
ali mi to ne radi, gdje gresim? |
Gjoreski |
14.07.2017 20:19 |
Predmet:Re: ORDER BY [uvjet] vrijeme ASC, [uvijet] vrijeme DESC
Eve ovo probaj
SELECT * FROM mojatabla
ORDER BY
CASE WHEN Kolona2 <'02:00' then Kolona2 END ASC,
CASE WHEN Kolona2 >'02:00' then Kolona2 END DESC;
Samo u ovom primeru vreme je tekstualno polje tako da moras da pretvoris u datetime da bi to korekno radio .
Ja sam ovde radio sa stringom kako i jeste tabela. |
Avko |
14.07.2017 22:20 |
Predmet:Re: ORDER BY [uvjet] vrijeme ASC, [uvijet] vrijeme DESC
TIME(STR_TO_DATE(mojaTabla.vrijeme, '%H:%i')) as vrijeme
Pa pretvorio evo ovo gore |
Gjoreski |
14.07.2017 23:45 |
Predmet:Re: ORDER BY [uvjet] vrijeme ASC, [uvijet] vrijeme DESC
Moras to uraditi kod uslova jer ovako uslov je string |
Avko |
16.07.2017 16:10 |
Predmet:Re: ORDER BY [uvjet] vrijeme ASC, [uvijet] vrijeme DESC
a zasto mi nece ovo:
date_sub(str_to_date(sati,'%H:%i'), interval 3 hour) as vrijeme
pretvoriti string sati u vrijeme, a onda od toga oduzeti 3 sata i staviti kao vrijeme? |
Avko |
16.07.2017 16:36 |
Predmet:Re: ORDER BY [uvjet] vrijeme ASC, [uvijet] vrijeme DESC
evo ga:
SELECT voce, HOUR(STR_TO_DATE(mojaTabla.vrijeme, '%H:%i')) as sati
FROM mojaTabla
ORDER BY
(CASE WHEN sati < 3 then sati end) ASC,
(CASE WHEN sati > 3 then sati END) DESC
nije bas neko rijesenje ali za sada prolazi |
Gjoreski |
16.07.2017 20:28 |
Predmet:Re: ORDER BY [uvjet] vrijeme ASC, [uvijet] vrijeme DESC
Ti si sad izvadio samo cas koj u ovaj tvoj slucaj e broj odnosno neki integer tip i ovo tvoje radice samo na osnovu casova ,ako ti treba ju i minute onda bi trebal nesto ovako
SELECT voce, HOUR(STR_TO_DATE(mojaTabla.vrijeme, '%H:%i')) as sati
FROM mojaTabla
ORDER BY
(CASE WHEN sati < HOUR(STR_TO_DATE('03:12'', '%H:%i')) then sati end) ASC,
(CASE WHEN sati > HOUR(STR_TO_DATE('03:12'', '%H:%i')) then sati END) DESC |
Avko |
17.07.2017 15:31 |
Predmet:Re: ORDER BY [uvjet] vrijeme ASC, [uvijet] vrijeme DESC
hvala na pomoci |
Avko |
24.07.2017 11:52 |
Predmet:Re: ORDER BY [uvjet] vrijeme ASC, [uvijet] vrijeme DESC
>POVEZANA TEMA<
ovdje gore je link na temu koja ima veze sa ovime ovdje.
Ukratko, uvoz podataka na neki cudan nacin ide obrnutim redosljedom na server, a lokalno se uvozi od 1 reda do zadnjega. To mi je zadavalo problem kod pretrage. Polja koja su type text a sadrze sate obrnuto su se prikazivala. Htio sam ih sortirati ali sam imao problem sa poljima koja sadrze 00:10. One spadaju u danasnji dan kod mene, u stvarnosti je to drugi dan. Da bi sortirao morao sam odrediti da sve do 00:59 spada u danasnji dan. Evo kako sam to rijesio:
SELECT voce,
IF( STR_TO_DATE( mojaTabla.vrijeme, ' %H:%i ' ) ) < STR_TO_DATE(' 01:00 ', ' %H:%i '),
STR_TO_DATE( mojaTabla.vrijeme, ' %H:%i ' ) ) + STR_TO_DATE( ' 24:00 ', ' %H:%i '),
STR_TO_DATE( mojaTabla.vrijeme, ' %H:%i ' ) )) AS satiMinute
FROM mojaTabla
ORDER BY satiMInute ASC
koristio sam IF naredbu u SELECT, IF [uvijet,THEN, ELSE] => jednostavno receno ako su sati manje od 1 uvecaj sate za 24 a ako nisu ne radi nista. Na kraju sortiraj po satima ASC (od najmanjeg do najveceg).
Za sada toliko, mozda nekome i pomogne nikad se nezna. |