2017-10-14 56 views
0

我正在使用Oracle數據庫。以下是設備工作時間表的詳細信息,始終從上午7:00開始,並於次日上午7:00(共24小時)結束。我需要以相同的方式報告日期明智升序和時間從上午7:00到下午7:00。請告知。Oracle數據按日期和時間排序

WorkDate是Date類型和休息兩列的是VARCHAR2類型

CREATE TABLE TT 
(
WorkDate DATE, 
FromTime VARCHAR2(100 BYTE), 
ToTime VARCHAR2(100 BYTE) 

) 

Work date From To 
8/8/2017 7:00 7:25 
8/8/2017 7:25 12:35 
8/8/2017 12:35 21:55 
8/8/2017 21:55 1:30 
8/8/2017 1:30 7:00 
8/9/2017 7:00 7:25 
8/9/2017 7:25 12:35 
8/9/2017 12:35 21:55 
8/9/2017 21:55 1:30 
8/9/2017 1:30 7:00 
+0

這些列是什麼類型?你能分享你的桌子的DDL嗎? – Mureinik

+0

WorkDate是日期類型,其餘部分是varchar2 – Rakesh

+0

如果您使用的是Oracle,爲什麼使用Microsoft SQL Server標記標記您的問題? –

回答

2

那麼唯一的問題是,7:25之後來到12:35在字母表中。您需要改爲07:25。使用LPAD這個:

select * 
from mytable 
order by workdate, lpad(fromtime, 5, '0'); 
1

串聯日與來自時間,然後轉換爲日期排序結果集。

select * from tt 
order by to_date(to_char(work_date, 'mm/dd/yyyy') || ' ' || from_date, 'mm/dd/yyyy hh24:mi') 
/

最簡單的事情會一直保存在FROM和TO的日期時間,但無疑也有,爲什麼你的應用程序需要做的事情硬的方式很好的理由。