oracle日期轉換成星期

賀子_DBA時代發表於2017-05-23
現在有個資料分析的工作,需要分析網站註冊會員的一些情況:
1.工作日、工作時間註冊的的會員成為付費會員的比列,
2.工作日、非工作時間註冊的的會員成為付費會員的比列,
3,非工作日,非工作時間註冊的的會員成為付費會員的比列。
4,非工作日,工作時間註冊的的會員成為付費會員的比列
工作時間按:08:30到17:30
工作日:週一到週五。
檢視工作日,工作時間的註冊會員總數:
select count(*) from member_info1234 where to_char(register_date,'d')>1 and to_char(register_date,'d')<7 and to_char(register_date,'HH24:mi:ss')>'08:00:00' and to_char(register_date,'HH24:mi:ss')<'17:30:00';
註釋:先透過to_char(sysdate,'d') 來把日期轉換成星期的第幾天,具體對照關係如下:
星期日----1
星期一----2
星期六----7
然後to_char(register_date,'d')>1 and to_char(register_date,'d')<7 這樣就選擇出來了工作日。
工作時間就是利用to_char(register_date,'HH24:mi:ss')>'08:00:00' and to_char(register_date,'HH24:mi:ss')<'17:30:00'選擇出來的。
前面四個需求的具體實現如下:
1.檢視工作日,工作時間註冊的會員數
select count(1) from member_info1234 where to_char(register_date,'d')>1 and to_char(register_date,'d')<7
and to_char(register_date,'HH24:mi:ss')>'08:00:00' and to_char(register_date,'HH24:mi:ss')<'17:30:00';
2..檢視工作日,非工作時間註冊的會員數
select count(1) from member_info1234 where to_char(register_date,'d')>1 and to_char(register_date,'d')<7
and ((to_char(register_date,'HH24:mi:ss')<'08:00:00' and to_char(register_date,'HH24:mi:ss')>'00:00:00')
or (to_char(register_date,'HH24:mi:ss')<'23:59:59' and to_char(register_date,'HH24:mi:ss')>'17:30:00')) ;
3..檢視非工作日,工作時間註冊的會員數
select count(1) from member_info1234 where (to_char(register_date,'d')=1 or to_char(register_date,'d')=7)
and to_char(register_date,'HH24:mi:ss')>'08:00:00' and to_char(register_date,'HH24:mi:ss')<'17:30:00';
4..檢視非工作日,非工作時間註冊的會員數
select count(1) from member_info1234 where (to_char(register_date,'d')=1 or to_char(register_date,'d')=7)
and ((to_char(register_date,'HH24:mi:ss')<'08:00:00' and to_char(register_date,'HH24:mi:ss')>'00:00:00')
or (to_char(register_date,'HH24:mi:ss')<'23:59:59' and to_char(register_date,'HH24:mi:ss')>'17:30:00'));
我們從這些資料比例如下:
1.工作日、工作時間註冊的的會員成為付費會員的比列, ----50605, 805 比列為0.015
2.工作日、非工作時間註冊的的會員成為付費會員的比列,----12188 , 70 比列為0.0057
3,非工作日,工作時間註冊的的會員成為付費會員的比列。----7316, 82 比列為0.011
4,非工作日,非工作時間註冊的的會員成為付費會員的比列 ---2907 ,19 比列為0.0065
透過這些比例可以瞭解到在工作日和工作時間註冊的會員價值最高,成為付費會員的可能性越大,並且可能是因為有的單位週六日也上班,導致非工作日,工作時間註冊的的會員成為付費會員的比列是第二大的,總起來說就是在工作時間註冊的會員,成為付費會員的可能性比較大,可以去告訴業務人員去重點去發展,
關於to_char的一些常用的用法 :
Select to_char(sysdate,'ss') from dual取當前時間秒部分
Select to_char(sysdate,'mi') from dual取當前時間分鐘部分
Select to_char(sysdate,'HH24') from dual取當前時間秒小時部分
Select to_char(sysdate,'DD') from dual取當前時間日期部分
Select to_char(sysdate,'MM') from dual取當前時間月部分
Select to_char(sysdate,'YYYY') from dual取當前時間年部分
Select to_char(sysdate,'w') from dual取當前時間是一個月中的第幾周(從1日開始算)
Select to_char(sysdate,'ww') from dual取當前時間是一年中的第幾周(從1.1開始算)
Select to_char(sysdate,'iw') from dual取當前時間是一年中的第幾周(按實際日曆的)
Select to_char(sysdate,'d') from dual取當前時間是一週的第幾天,從星期天開始,週六結束
Select to_char(sysdate,'day') from dual 取當前日是星期幾,和資料庫設定的字符集有關,會輸出'Tuesday'
Select to_char(sysdate,'ddd') from dual 當前日是一年中的第幾天



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29654823/viewspace-2139742/,如需轉載,請註明出處,否則將追究法律責任。

相關文章