Bosna i Hercegovina



#1 14.07.2017-09:52
Avko Offline
Administrator
Registrovan/a od: 28.05.2014-09:21
Komentari: 2,738


Subject: ORDER BY [uvjet] vrijeme ASC, [uvijet] vrijeme DESC
DownloadIzvorni kod (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?
Newton laže! Lake padaju brže!
↑  ↓

#2 14.07.2017-19:19
Gjoreski Offline
Super Moderator
Registrovan/a od: 02.02.2009-22:24
Komentari: 1,329


Ocjena: Ocjena:100 Subject: 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.
↑  ↓

#3 14.07.2017-21:20
Avko Offline
Administrator
Registrovan/a od: 28.05.2014-09:21
Komentari: 2,738


Subject: Re: ORDER BY [uvjet] vrijeme ASC, [uvijet] vrijeme DESC
TIME(STR_TO_DATE(mojaTabla.vrijeme, '%H:%i')) as vrijeme

Pa pretvorio evo ovo gore
Newton laže! Lake padaju brže!
↑  ↓

#4 14.07.2017-22:45
Gjoreski Offline
Super Moderator
Registrovan/a od: 02.02.2009-22:24
Komentari: 1,329


Ocjena: Ocjena:100 Subject: Re: ORDER BY [uvjet] vrijeme ASC, [uvijet] vrijeme DESC
Moras to uraditi kod uslova jer ovako uslov je string
↑  ↓

#5 16.07.2017-15:10
Avko Offline
Administrator
Registrovan/a od: 28.05.2014-09:21
Komentari: 2,738


Subject: 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?
Newton laže! Lake padaju brže!
↑  ↓

#6 16.07.2017-15:36
Avko Offline
Administrator
Registrovan/a od: 28.05.2014-09:21
Komentari: 2,738


Subject: 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
Newton laže! Lake padaju brže!
↑  ↓

#7 16.07.2017-19:28
Gjoreski Offline
Super Moderator
Registrovan/a od: 02.02.2009-22:24
Komentari: 1,329


Ocjena: Ocjena:100 Subject: 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
↑  ↓

#8 17.07.2017-14:31
Avko Offline
Administrator
Registrovan/a od: 28.05.2014-09:21
Komentari: 2,738


Subject: Re: ORDER BY [uvjet] vrijeme ASC, [uvijet] vrijeme DESC
hvala na pomoci
Newton laže! Lake padaju brže!
↑  ↓

#9 24.07.2017-10:52
Avko Offline
Administrator
Registrovan/a od: 28.05.2014-09:21
Komentari: 2,738


Subject: 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.
Newton laže! Lake padaju brže!
Ovaj komentar je mijenjan 1 puta. zadnja izmjena 24.07.2017-14:56 od strane Avko. ↑  ↓

Stranice (1): 1


All times are GMT +01:00. Current time: 17.11.2017-22:03.