Avko 14.07.2017 10:52
Predmet:ORDER BY [uvjet] vrijeme ASC, [uvijet] vrijeme DESC

PreuzmiIzvorni kôd (Text):
  1. CREATE TABLE mojaTabla
  2. (
  3.     kolona1 TEXT
  4.     , kolona2 TEXT
  5. )
  6. GO
  7.  
  8. INSERT mojaTabla (kolona1,kolona2) VALUES ('jabuka', '22:35')
  9. INSERT mojaTabla (kolona1,kolona2) VALUES ('jabuka', '01:35')
  10. INSERT mojaTabla (kolona1,kolona2) VALUES ('kruska', '12:35')
  11. 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.