若在PLSQL想要查詢所傳日期參數月的所有工作天,則使用以下方法達成
WITH ALLWorkDate as
(
select allday workday from (
select allday from (
select to_date(to_char(TO_DATE(:tdate,'YYYY/MM/DD'),'yyyy-mm')||'-01','yyyy-mm-dd')+rownum-1 allday
from
(select to_date(to_char(TO_DATE(:tdate,'YYYY/MM/DD'),'yyyy-mm')||'-01','yyyy-mm-dd'),to_date(add_months(to_date(to_char(TO_DATE(:tdate,'YYYY/MM/DD'),'yyyy-mm')||'-01','yyyy-mm-dd'),'yyyy-mm-dd'),1) from dual)
connect by rownum <= add_months(to_date(to_char(TO_DATE(:tdate,'YYYY/MM/DD'),'yyyy-mm')||'-01','yyyy-mm-dd'),1)-to_date(to_char(TO_DATE(:tdate,'YYYY/MM/DD'),'yyyy-mm')||'-01','yyyy-mm-dd')
) where 1=1
and to_char(allday,'D') >1
and to_char(allday,'D') <7
and allday not in (select Holiday from EBHoliday where to_char(Holiday,'yyyy-mm') = to_char(TO_DATE(:tdate,'YYYY/MM/DD'),'yyyy-mm'))
order by allday desc
)aa
),LastWorkDate as
(
select workday
from ALLWorkDate
where rownum = 1
),Last2WorkDates as
(
select workday
from ALLWorkDate
where rownum <= 2
)
其中ALLWorkDate會將所有該月的日期撈出,再去掉在'假日檔'裡的日期;
我遇到的題目是最後一個工作日, 及最後兩個工作日..
所以利用反向排序後, 再用rownum指定是一筆, 還是兩筆...
2017年1月6日 星期五
[程式類]-PLSQL(oracle)中字字碼RDAP 字數算錯
在PLSQL 若採用RDAP 想輸出固定字數的字元時我們通常採用;
LDAP(Col, 10, ' ')
Col指的是欄位,
10表示固定10碼
' '表示要填不足碼的值
LDAP指左補' ',表示此欄位靠右;RDAP則反之
但是若Col裡的值是中文字時, 這時就要注意"難字"的問題
例:
LDAP('這是測式堃',10,' ')
這時它會誤判堃這個字,會造成所要的結果和你想的不一樣,
中文若要輸出固字的字數,則要使用DECode方法來避免這個問題產生
RPAD(DECODE('這是測式堃', NULL, ' ' , '這是測式堃'), 10, ' ')
LDAP(Col, 10, ' ')
Col指的是欄位,
10表示固定10碼
' '表示要填不足碼的值
LDAP指左補' ',表示此欄位靠右;RDAP則反之
但是若Col裡的值是中文字時, 這時就要注意"難字"的問題
例:
LDAP('這是測式堃',10,' ')
這時它會誤判堃這個字,會造成所要的結果和你想的不一樣,
中文若要輸出固字的字數,則要使用DECode方法來避免這個問題產生
RPAD(DECODE('這是測式堃', NULL, ' ' , '這是測式堃'), 10, ' ')
訂閱:
文章 (Atom)
POSTGRE SQL 想使用變數去定義一段日期區間, 但遍尋不到像是在 MSSQL 時常用的 DECLARE @count int, @x int, @y nvarchar(10)... 想到一招利用 CTE 方式去定義一個這樣類似變數的作法來實現... 原來的script w...
-
兩年半前從台北東區輕移民到林口的我們, 初期一直是騎著摩托車往返台北和林口。 這裡提供一下我的通勤時間, 給想要住在林口的人一些參考。 騎車 (A)- 50分鐘 林口(文化三路)-->往台北(大安區) 路程26公里, 先走林口大科路往泰山, 再往五股工業區, ...
-
一如往常,一個自然睡醒的假日。 靠~哪裡來的蟑螂;我實在不敢相信,它會出現在我新買的家。 不會吧...又要回顧了嗎?就像海賊王一樣,看到某人某事某物之後都會來這麼一段.... 還記得六四天安門事件當天,也就是這一天國內媒體起了重大的變化,慢慢變成24小時聯播的起源...