Oracle中TO_DATE TO_CHAR格式

来源:http://www.cnblogs.com/wangfuyou/archive/2016/10/12/5952622.html
-Advertisement-
Play Games

TO_CHAR 是把日期或數字轉換為字元串 TO_DATE 是把字元串轉換為資料庫中得日期類型轉換函數 TO_NUMBER 將字元轉化為數字TO_CHAR 使用TO_CHAR函數處理數字 TO_CHAR(number, '格式') TO_CHAR(salary,’$99,999.99’); 使用TO ...


TO_CHAR 是把日期或數字轉換為字元串

TO_DATE 是把字元串轉換為資料庫中得日期類型轉換函數

TO_NUMBER 將字元轉化為數字

TO_CHAR

使用TO_CHAR函數處理數字

TO_CHAR(number, '格式')

TO_CHAR(salary,’$99,999.99’);

使用TO_CHAR函數處理日期

TO_CHAR(date,’格式’);

 

TO_NUMBER

使用TO_NUMBER函數將字元轉換為數字

TO_NUMBER(char[, '格式'])

 

TO_DATE

使用TO_DATE函數將字元轉換為日期

TO_DATE(char[, '格式'])

 

數字格式格式

9 代表一個數字

0 強制顯示0

$ 放置一個$符

L 放置一個浮動本地貨幣符

. 顯示小數點

, 顯示千位指示符

 

 日期格式

格式控制 描述

YYYY、YYY、YY 分別代表4位、3位、2位的數字年

YEAR 年的拼寫

MM 數字月

MONTH 月的全拼

MON 月的縮寫

DD 數字日

DAY 星期的全拼

DY 星期的縮寫

AM 表示上午或者下午

HH24、HH12 12小時制或24小時制

MI 分鐘

SS 秒鐘

SP 數字的拼寫

TH 數字的序數詞

 

“特殊字元” 假如特殊字元

HH24:MI:SS AM 15:43:20 PM

 

日期例子:

SELECT TO_DATE('2006-05-01 19:25:34', 'YYYY-MM-DD HH24:MI:SS') FROM DUAL

SELECT TO_DATE('2006-05-01 19:25', 'YYYY-MM-DD HH24:MI') FROM DUAL

SELECT TO_DATE('2006-05-01 19', 'YYYY-MM-DD HH24') FROM DUAL

SELECT TO_DATE('2006-05-01', 'YYYY-MM-DD') FROM DUAL

SELECT TO_DATE('2006-05', 'YYYY-MM') FROM DUAL

SELECT TO_DATE('2006', 'YYYY') FROM DUAL


日期說明:

當省略HH、MI和SS對應的輸入參數時,Oracle使用0作為DEFAULT值。如果輸入的日期數據忽略時間部分,Oracle會將時、分、秒部分都置為0,也就是說會取整到日。

同樣,忽略了DD參數,Oracle會採用1作為日的預設值,也就是說會取整到月。

但是,不要被這種“慣性”所迷惑,如果忽略MM參數,Oracle並不會取整到年,取整到當前月。

 

註意:

1.在使用Oracle的to_date函數來做日期轉換時,可能會直覺地採用“yyyy-MM-dd HH:mm:ss”的格式作為格式進行轉換,但是在Oracle中會引起錯誤:“ORA 01810 格式代碼出現兩次”。如:select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mm:ss') from dual;原因是SQL中不區分大小寫,MM和mm被認為是相同的格式代碼,所以Oracle的SQL採用了mi代替分鐘。select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mi:ss') from dual;

2.另要以24小時的形式顯示出來要用HH24

select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from dual;//mi是分鐘

select to_char(sysdate,'yyyy-MM-dd HH24:mm:ss') from dual;//mm會顯示月份

 


TO_DATE格式(以時間:2007-11-02 13:45:25為例)

        Year:

        yy two digits 兩位年 顯示值:07

        yyy three digits 三位年 顯示值:007

        yyyy four digits 四位年 顯示值:2007

 

        Month:

        mm number 兩位月 顯示值:11

        mon abbreviated 字元集表示 顯示值:11月,若是英文版,顯示nov

        month spelled out 字元集表示 顯示值:11月,若是英文版,顯示november

          
        Day:

        dd number 當月第幾天 顯示值:02

        ddd number 當年第幾天 顯示值:02

        dy abbreviated 當周第幾天簡寫 顯示值:星期五,若是英文版,顯示fri

        day spelled out 當周第幾天全寫 顯示值:星期五,若是英文版,顯示friday

        ddspth spelled out, ordinal twelfth

   

              Hour:

              hh two digits 12小時進位 顯示值:01

              hh24 two digits 24小時進位 顯示值:13

 

             Minute:

              mi two digits 60進位 顯示值:45

              
              Second:

              ss two digits 60進位 顯示值:25

 

              其它

              Q digit 季度 顯示值:4

              WW digit 當年第幾周 顯示值:44

              W digit 當月第幾周 顯示值:1

              
        24小時格式下時間範圍為: 0:00:00 - 23:59:59....

        12小時格式下時間範圍為: 1:00:00 - 12:59:59 .... 

            
1. 日期和字元轉換函數用法(to_date,to_char)

select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as nowTime from dual; //日期轉化為字元串

select to_char(sysdate,'yyyy') as nowYear from dual; //獲取時間的年

select to_char(sysdate,'mm') as nowMonth from dual; //獲取時間的月

select to_char(sysdate,'dd') as nowDay from dual; //獲取時間的日

select to_char(sysdate,'hh24') as nowHour from dual; //獲取時間的時

select to_char(sysdate,'mi') as nowMinute from dual; //獲取時間的分

select to_char(sysdate,'ss') as nowSecond from dual; //獲取時間的秒

select to_date('2004-05-07 13:23:44','yyyy-mm-dd hh24:mi:ss') from dual//

 

2.

    select to_char( to_date(222,'J'),'Jsp') from dual  

    顯示Two Hundred Twenty-Two


3.求某天是星期幾

   select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day') from dual;

   星期一

   select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual;

   monday

   設置日期語言

   ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN';

   也可以這樣

   TO_DATE ('2002-08-26', 'YYYY-mm-dd', 'NLS_DATE_LANGUAGE = American')


4. 兩個日期間的天數

    select floor(sysdate - to_date('20020405','yyyymmdd')) from dual;


5. 時間為null的用法

   select id, active_date from table1

   UNION

   select 1, TO_DATE(null) from dual;

   
   註意要用TO_DATE(null)


6.月份差

   a_date between to_date('20011201','yyyymmdd') and to_date('20011231','yyyymmdd')

   那麼12月31號中午12點之後和12月1號的12點之前是不包含在這個範圍之內的。

   所以,當時間需要精確的時候,覺得to_char還是必要的

      
7. 日期格式衝突問題

    輸入的格式要看你安裝的ORACLE字元集的類型, 比如: US7ASCII, date格式的類型就是: '01-Jan-01'

    alter system set NLS_DATE_LANGUAGE = American

    alter session set NLS_DATE_LANGUAGE = American

    或者在to_date中寫

    select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual;

    註意我這隻是舉了NLS_DATE_LANGUAGE,當然還有很多,

    可查看

    select * from nls_session_parameters

    select * from V$NLS_PARAMETERS


8.

   select count(*)

   from ( select rownum-1 rnum

       from all_objects

       where rownum <= to_date('2002-02-28','yyyy-mm-dd') - to_date('2002- 02-01','yyyy-mm-dd')+1

      )

   where to_char( to_date('2002-02-01','yyyy-mm-dd')+rnum-1, 'D' )

        not in ( '1', '7' )

   
   查找2002-02-28至2002-02-01間除星期一和七的天數

   在前後分別調用DBMS_UTILITY.GET_TIME, 讓後將結果相減(得到的是1/100秒, 而不是毫秒).


9. 查找月份

    select months_between(to_date('01-31-1999','MM-DD-YYYY'),to_date('12-31-1998','MM-DD-YYYY')) "MONTHS" FROM DUAL;

    1

   select months_between(to_date('02-01-1999','MM-DD-YYYY'),to_date('12-31-1998','MM-DD-YYYY')) "MONTHS" FROM DUAL;

    1.03225806451613

       
10. Next_day的用法

    Next_day(date, day)

    Monday-Sunday, for format code DAY

    Mon-Sun, for format code DY

    1-7, for format code D


11

   select to_char(sysdate,'hh:mi:ss') TIME from all_objects

   註意:第一條記錄的TIME 與最後一行是一樣的

   可以建立一個函數來處理這個問題

   create or replace function sys_date return date is

   begin

   return sysdate;

   end;

   

   select to_char(sys_date,'hh:mi:ss') from all_objects;

     
12.獲得小時數
<

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 現在開始具體 處理每一個導航頁面的邏輯,首先看第二個導航頁 本文地址:http://www.cnblogs.com/wuyudong/p/5949775.html,轉載請註明出處。 這裡需要實現綁定sim卡序列號的功能,註意添加相應的許可權:uses-permission android:name=" ...
  • 從安卓手機端以get和post的方式提交數據到伺服器端,伺服器端進行判斷,並返回相應的結果給安卓手機 ...
  • 分享一下自己在學習iOS開發過程中整理的一些比較常見的知識點。內容門檻較低,比較適合初學,歡迎各大程式開發愛好者交流。分享內容中存在錯誤還望能指導指導!! 隨筆說明: 集合Object-c部分基礎知識點、常用的方法 隨筆定義: 可當做查詢工具 隨筆持續完善,後續會整理swift. 如果需要PDF版本 ...
  • https://i.cnblogs.com/EditPosts.aspx?opt=1 ...
  • 《SQL學習指南》中的第5章 1.連接: 在某種機制下,需要將多個表中的數據進行整合到一起,即同一個查詢的結果集中包含來自兩個或者兩個以上的表,這種機制被稱為連接(join). 1.1 ANSI連接語法 本文采用的都是符合SQL92版本的ANSI SQL標準,所有的主流資料庫都採用了SQL92的連接 ...
  • 在最近寫觸發器的時候發現當我需要對當前行進行更新操作時報如下錯誤: 顯而易見,意思是不能在"after trigger"觸發器中進行NEW(當前操作行)更新操作。而你這個時候需要做的就是將UPDATE語句放入到“before trigger”中。 ...
  • Mysql安裝的時候可以有msi安裝和zip解壓縮兩種安裝方式。zip壓縮包解壓到目錄,要使用它還需對它進行一定的配置。下麵對Mysql壓縮包版的安裝方法進行詳細的描述,要是此文有不正確的認識,希望大家指正,非常感謝。 一、下載mysql壓縮包文件。 下載地址:http://dev.mysql.co ...
  • 跟蹤標記:1204/1222 功能及用途: 捕獲SQL Server死鎖信息,並自動存放到錯誤日誌(ERRORLOG)中。 舉例: 跟蹤標記1204 在錯誤日誌中記錄的死鎖信息 跟蹤標記1222 在錯誤日誌中記錄的死鎖信息 小結: (1) 不需要加跟蹤標記3605,跟蹤標記1204,1222捕獲的死 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...