目前系統時間
Oracle 用來取得目前系統時間的函數為 sysdate
SELECT sysdate FROM dual;
資料庫系統版本
SELECT * FROM V$VERSION;
更改目前 session 日期顯示格式
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD';
常用的時間格式
Daily
- 當天時間 0 點 0 分 *
to_date( to_char( sysdate, 'dd-mm-yy' ), 'dd-mm-yy' )
- 當天時間 23:59:59 *
to_date( to_char( sysdate, 'dd-mm-yy' )||' 23:59:59', 'dd-mm-yy hh24:mi:ss' )
Weekly
- 當週的星期日 0 點 0 分,參數 1 表示星期日為一週的第一天, 也可以直接下 ‘SUNDAY’ 為一週的第一天 *
NEXT_DAY(to_date( to_char( sysdate, 'dd-mm-yy' ), 'dd-mm-yy' ) -7, 1)
- 當週的星期六的 23:59:59 *
NEXT_DAY(to_date( to_char( sysdate, 'dd-mm-yy' )||' 23:59:59', 'dd-mm-yy hh24:mi:ss' ) , 1)
若發生
ORA-01846 Not a vaild day of the week
時,必須將一週的第一天參數改為英文或數字(看原本下的是數字或英文)
Monthly
- 當月 1 號 0 點 0 分 *
to_date( '01-'||to_char( sysdate, 'mm-yyyy' ), 'dd-mm-yyyy' )
- 當月最後一天的 23:59:59 *
to_date( to_char( last_day(sysdate), 'dd-mm-yyyy' )||' 23:59:59', 'dd-mm-yy hh24:mi:ss' )
Oracle 的 SQL 報表出現斷行錯誤
SQL 明明就是正確的,在 TOAD 上可以順利執行,但上傳到 Oracle 之後,卻頻頻出現出現錯誤,或毫無作用。解決的方法是:
- 將多餘的空行刪掉
- 注意 SQL 最後一行有沒有加
/
符號
詳細請參考此篇文章。
C# System.Data.OracleClient 問題
中文錯誤訊息:
InvalidOperationException: 嘗試載入 Oracle 用戶端程式庫時傳出 BadImageFormatException。當與具有 32 位元的 Oracle 用戶端元件執行 64 位元模式安裝時,會出現此問題。 BadImageFormatException: 試圖載入格式錯誤的程式。 (發生例外狀況於 HRESULT: 0x8007000B)
英文錯誤訊息:
System.InvalidOperationException: Attempt to load Oracle client libraries threw BadImageFormatException. This problem will occur when running in 64 bit mode with the 32 bit Oracle client components installed. System.BadImageFormatException: An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B).
原因:
OracleClient 會依 x64/x86 決定適當的 Oracle Client 版本,不必手工切換。因此,如果想在 Windows x64 上使用 System.Data.Oraclient
,最好 32bit/64bit 兩種 10.2 + 版本的 Oracle Client 都要裝,並確定 PATH
變數中二者的 bin 目錄都有在其中。
詳細請參考此篇文章。
參考資料: