簡體   English   中英

使用字符字段格式化日期

[英]Date formating with Character field

我有一個字符字段,表示日期為'01-JAN-13' 當我用TO_DATE(SUBSTR(DSIS_CC_MASTER.created_ts, 1, 9),'YYYY-MM-DD')重新格式化時,我得到結果為13-JAN-01

如何以YY-MM-DD格式獲取數據。 我是否需要在CASE中寫入以將月份更改為數字?

SELECT dsis_cc_master.created_ts
     , to_date(substr(dsis_cc_master.created_ts, 1, 9), 'YYYY-MM-DD') AS created_month
  FROM traffic_eng.dsis_cc_master
 WHERE dsis_cc_master.created_ts >= to_date('2013-01-01', 'yyyy-mm-dd')

我的結果是

01-JAN-13    13-JAN-01

我想在第二欄中獲得01-01-1313-01-01

您必須使用日期格式模型和TO_CHAR函數以您需要的格式獲取結果:

select DSIS_CC_MASTER.created_ts, TO_CHAR(TO_DATE(SUBSTR(DSIS_CC_MASTER.created_ts, 1, 9),'YYYY-MM-DD'), 'DD-MM-YY') as created_month FROM TRAFFIC_ENG.DSIS_CC_MASTER
WHERE DSIS_CC_MASTER.created_ts >= to_date('2013-01-01', 'yyyy-mm-dd')

由於列中的數據已經以YYYY-MM-DD格式存儲,您實際上可以只是substr(DSIS_CC_MASTER.created_ts, 3, 7) ,您將得到所需的內容。

您將返回一個日期值,但會顯示該客戶端配置為顯示日期。 如果要顯式設置格式,請使用to_char返回字符串:

select 
    DSIS_CC_MASTER.created_ts, 
    TO_CHAR(TO_DATE(SUBSTR(DSIS_CC_MASTER.created_ts, 1, 9),'YYYY-MM-DD'),'DD-MM-YY') as created_month 
FROM TRAFFIC_ENG.DSIS_CC_MASTER
WHERE DSIS_CC_MASTER.created_ts >= to_date('2013-01-01', 'yyyy-mm-dd')

但是,如果此查詢的使用者期望返回日期類型(例如,進行日期數學運算),則更改返回類型可能會導致問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM