最近在做SQL的日期格式轉換
不過遇到一個問題
當我在轉換時必須先指定好格式
但由於我的資料有民國十位數與百位數
如果我轉出的值為民國百位數以下
就顯示yy/mm/dd格式即可 前面不要0
如果為百位數以上 就顯示yyy/mm/dd
網上的資源都沒有教如何做這方面的條件排除
想問各位有何方法
這邊-697979天 跟西元年-1911一樣的意思
更新
現在要做民國年轉西元年
不過我的民國年格式欄位為VARCHAR
並且格式為yyy/mm/dd
在這情況之下,怎麼樣正確地將
111/07/06 轉為 2022/07/06呢?
感謝嗯凹屋ㄟ歐的建議
但是由於我的欄位為varchar
並且內容有這個/斜線符號
所以在使用TO_DATE轉型時會報錯
透過TO_CHAR也會出現此報錯(發現是潤年問題)
更新-如果想透過民國年去算出年齡該怎麼做呢?
西元年可以透過sysdate去-西元出生年即可
但是若是民國年的話,是否還需先將sysdate轉成民國年,再來做計算呢?
目前可透過西元年查出年齡
目前用民國年轉sysdate後再計算年齡發現問題
但明明一般sysdate轉民國的時候沒問題呀
但轉完後計算年齡就出錯了
認真來說。在資料庫內直接儲存偽國民年的DATE格式,並不是很好的行為。
一般來說最好還是儲存實際的日期格式。
然後再輸出時再轉換成國民年會比較好。
不過還是回來你的問題好了
因為你的是字串型態的欄位。所以一般有兩種做法
第一招是用切開字元處理後重新再組合的招。
oracle的話,我該查了一下,是可以用
REGEXP_SUBSTR 來處理的。
用/切分後。將第一個元素值加上1911再組合回來
第二招是將其字串先做日期格式轉換為unixtime後。再加上原本缺的1911年也就是697979的值。
再轉換回來正確的日期格式。
由於我這沒有oracle可以試驗。所以你就依照上面說的理念自行研究看看吧。