将管道分隔的军事时间转换为标准时间

时间:2015-02-06 01:21:40

标签: sql oracle

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

当我查询客户营业时间时,我会得到以下结果:

|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'

1 个答案:

答案 0 :(得分: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

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

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