Oracle關於week的計算問題
問題如下:
使用如下兩句SQL查詢,結果分別為35和36,而事實上這兩天在同一周
select TO_CHAR (TO_DATE ('20080901', 'yyyyMMdd'), 'ww') as Week from dual;
select TO_CHAR (TO_DATE ('20080902', 'yyyyMMdd'), 'ww') as Week from dual;
原因:
Oracle對周的計算很原始,直接計算今天距離1/1有幾天,然後除以7得到周。
修改方式:
我和kevin寫了個函式,手工推算周,可以解決這個問題
CREATE OR REPLACE
FUNCTION getnaturalweek (
date_ IN VARCHAR2 DEFAULT TO_CHAR (SYSDATE, 'YYYYMMDD')
)
RETURN VARCHAR2
IS
add_days NUMBER (8, 0);
total_days NUMBER (8, 0);
total_weeks NUMBER (8, 0);
weeks VARCHAR2 (2);
BEGIN
add_days :=
TO_NUMBER (TO_CHAR (TRUNC (TO_DATE (date_, 'YYYYMMDD'), 'YYYY'), 'D'))
- 1;
total_days :=
TO_NUMBER (TO_CHAR (TO_DATE (date_, 'YYYYMMDD'), 'ddd'))
+ add_days;
total_weeks := CEIL (total_days / 7);
weeks := TO_CHAR (total_weeks);
IF LENGTH (weeks) <= 1
THEN
weeks := '0' || weeks;
END IF;
RETURN weeks;
END;
/
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/11411056/viewspace-733352/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 關於日期計算的問題 (轉)
- 關於vue的使用計算屬性VS使用計算方法的問題Vue
- 基於關鍵詞及問題主題的問題相似度計算
- 關於oracle的監聽問題Oracle
- 關於Oracle字符集的問題Oracle
- 關於JS的浮點數計算精度問題解決方案JS
- 【oracle】關於日誌產生量的計算Oracle
- 關於int型別數值的運算問題型別
- 關於考勤模組中設計的問題
- 關於oracle檔案許可權的問題Oracle
- 關於oracle的索引重建問題及原因分析Oracle索引
- 18、關於oracle 認證的幾個問題Oracle
- 問一個關於oracle8的簡單的問題!Oracle
- 幾個關於雲端計算,想問又不好意思提的問題(一)
- 幾個關於雲端計算,想問又不好意思提的問題(二)
- 關於SQLServerDriver的問題SQLServer
- 關於 JavaMail 的問題JavaAI
- 關於session的問題Session
- Oracle遷移到PPAS(PostgreSQL)時的日期計算問題OracleSQL
- 關於oracle資料庫訊號量的問題Oracle資料庫
- 關於oracle invalid components問題的解決Oracle
- 關於oracle中blob欄位的錄入問題Oracle
- 關於SSH中對於action的監聽問題(關於系統計數)
- 一道關於block尺寸計算的筆試題BloC筆試
- [20171215]關於md5sum的計算的小問題.txt
- 閏年的計算問題
- 雲端計算的安全問題
- 關於NULL的兩個計算Null
- 關於javascript的this指向問題JavaScript
- 關於跨域的問題跨域
- 關於bit code的問題
- 關於序列同步的問題
- 關於IP地址的問題
- 關於橋模式的問題模式
- 求救 關於parallel的問題Parallel
- 關於web start的問題Web
- 關於action的error問題Error
- 關於ADAPTER的問題APT