2015-02-06 94 views
0

我需要一些帮助,将由管道分隔的军事时间转换为标准时间。另外,我想知道是否有可能将管道解码为一周中的某一天。将管道分隔的军事时间转换为标准时间

当我查询了客户小时的操作,我看到下面的结果:

|0900|1800|0900|1800|0900|1800|0900|1800|0900|1800|0900|1300|| 

第一管等于星期一打开,第二管等于星期一关闭。第三管等于周二开盘,第四个星期二休息等等,等等

我希望看到的是一样的东西

Monday: 9:00am - 6:00pm, 
Tuesday: 9:00am - 6:00pm, 
Wednesday: 9:00am - 6:00pm, 
Thursday: 9:00am - 6:00pm, 
Friday: 9:00am - 6:00pm, 
Saturday: 9:00am - 1:00pm, 
Sunday: Closed. 

这是可能在Oracle转换?

select hours_of_operation 
from customer_listing 
where listing_id = '255990748' 
+0

是的,这是可能的。您可能必须编写一个pl/sql函数来遍历这些值或一个长选择语句。 – OldProgrammer 2015-02-06 01:48:43

回答

0

这是一个SQLFiddle为您开始。第一天将是:

select 'Monday: '|| 
     to_char(to_date(substr(hours_of_operation,2,4),'HH24MI'),'HH12:MIAM') 
     ||'-' || 
     to_char(to_date(substr(hours_of_operation,7,4),'HH24MI'),'HH12:MIAM') 
from test 

然后,只需添加,并移动子字符串函数索引。

更新:我刚刚意识到这只适用于固定领域。如果你缺少一天,它会失败。这确实需要编写一个函数来处理一些解析逻辑。

+0

谢谢你,OldProgrammer。这是我需要的起点。再次感谢!它为我工作。 – 2015-02-06 17:21:03

相关问题