在oracle中,可以利用「select sysdate from dual;」語句來查詢時間格式,select語句可以對資料進行簡單的查詢,該語句用於格式化輸出日期。
本教學操作環境:Windows10系統、Oracle 11g版、Dell G3電腦。
1. oracle對時間格式的資料存貯
Oracle以特定的儲存格式來儲存時間,佔7個字節,與查詢顯示的時間無關。存貯的時間包括年月日時分秒,最小精度為秒,不存貯秒以下的時間單位。因此在一些前台支援毫秒級的程式(如PB客戶端程式)連接到oracle資料庫時應注意這點。查詢時顯示的時間格式,由會話環境決定,或由使用者定義,與資料庫無關
2.oracle時間顯示形式
通常,客戶端與資料庫建立起連線後,oracle就會給一個缺省的時間格式資料的顯示形式,與所使用的字元集有關。一般顯示年月日,不顯示時分秒。例如,使用us7ascii字元集(或其他的英文字元集)時,預設的時間格式顯示為:28-Jan-2003,而使用zhs16gbk字元集(或其他中文字元集)時時間格式缺省顯示為:2003-1月-28。向表中插入資料時,如果不使用轉換函,時間欄位的格式必須遵循會話環境的時間格式,否則不能插入。查看目前會話的時間格式,可以使用以下的SQL語句:
SQL> select sysdate from dual;
3.向oracle表中插入時間格式的資料
向oracle表插入時間格式的數據是一個相對來講比較麻煩的事情,要么你嚴格遵從當前會話的時間格式書寫你的時間值,要么使用轉換函數自訂時間數據的格式。有兩個與時間相關的轉換函數:to_char 和to_date 。 to_char(時間值,時間格式)函數將時間值轉換為字串形式,通常在查詢中使用;to_date(字串,時間格式)則把格式字串轉換時間值,通常在insert 語句中使用
4 如何修改會話中的日期格式
修改目前會話中的日期格式據說有三種辦法,我只做過前兩種辦法的試驗,修改glogin.sql文件的辦法我
沒有試過,不知道是不是真的能行。下面一一解說。
(1) 在sql*plus中修改目前會話的日期格式
SQL> alter session set nls_date_format = 'yyyy-mm-dd hh24:mi:ss';將目前會話的時間格式修改為這種格式: 2003-01-28 15:23:38,即四位年-兩位月-兩位日,空格,24小時的製的小時:分鐘:秒。
這種修改方法,只對目前會話有效。注意,是對目前會話,而不是目前的sql*plus視窗。即如果你這樣修
改之後,又使用connect指令以其他使用者連接到資料庫或是連接到其他的資料庫,則這個日期格式就失效了,又恢復到缺省的日期格式。
(2) 修改登錄機碼(只對windows系統)
在登錄hkey_local_machinesoftwareoraclehome0主鍵中增加一個字串(8i版本),字串名為nls_date_format,字串的值為你希望定義的時間格式,如: yyyy-mm-dd hh24:mi:ss ,然後重新啟動sql*plus。
這種修改方法,對sql*plus窗口有效,也就是不論你打開多少個sql*plus窗口,預設的都是這種時間格式。修改伺服器端的註冊表無效,只有修改客戶端的註冊表才有效。
(3) 修改$oracle_homesqlplusadmin目錄中glogin.sql檔
這種方法我沒有試過,不敢亂說,以免誤導大家。請了解這種方法的高手來指教。
5 日期格式的優先權
如果在一個特定的環境中,既修改了註冊表,又使用alter session指令修改了目前會話,那麼哪一種修改方法有效? alter session指令有效,它的優先權是最高的。也就是不管目前的客戶端環境是什麼樣的,登錄機碼修改成什麼樣子了,只要你使用了alter session指令來修改了時間格式,那麼就以你修改後的時
間格式為準。因此,如果直接使用sql*plus互動式查詢或插入時間格式的數據,兩種方法都可以用。如果使用sql檔案來進行批次的插入或是定時執行,最好在使用時間資料前使用alter session指令來修改會話,以確保這個sql語句的正常運作與環境無關。同樣的,如果是前台的客戶端程式中需要使用到時間格式的數據,最好也在使用之前修改會話,或者使用to_char或to_date函數進行轉換(強烈推薦使用轉換函數),以保證程式運行與環境無關。
小結:
oracle資料庫中有關時間類型的數據,定義了很多函數,特別是關於時間數據的計算,非常方便,當然,方便的前提是你對oracle的時間函數比較熟悉。在這裡我有時候看到有些人存貯時間類型的資料時使用字串類型的字段,我強烈的反對這種做法,不論是從系統的開銷,還是從時間資料的計算來講,或者是取這個數據中的某一個子數據,例如取時間中的月,取時間中的星期等等,都不如直接存貯為時間類型的數據來得方便。只要熟悉了oracle關於時間的函數,我相信大家會喜歡上oracle時間類型的數據的,非常靈活,功能強大,幾乎可以做你所能想到的關於時間的一切事情——就看你對oracle的時間函數掌握程度了
推薦教學:《Oracle影片教學》
以上是oracle怎樣查詢時間格式的詳細內容。更多資訊請關注PHP中文網其他相關文章!