2015年7月27日 星期一

oracle 轉 民國年

oracle 轉 民國年

最近查網路上 oracle 日期轉民國年的方法

發現大部分都是
 1.先取年分
 2.轉成數字
 3.減去 1911
 4.再轉成字串
 5.最後和日期的其他部分組合

但是,既然知道要減 1911年,
那為什麼不直接減 1911年的數值就好了

在 Timestamp 的值中,
 整數表示天數(有些資料表示自 1899/12/30 00:00:00 起至指定日期的天數)
 小數點以下表示 時,分,秒(有些資料庫還有微秒)

所以就測試了一下,減去 697979天,就相當於 1911年了
這數字也蠻好記的 697979,

以下就以此作練習,果然步驟節省很多

-- SQL syntax:
select
  to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss') as AAA, 
  to_char(to_number(to_char(sysdate, 'yyyymmdd')) - 19110000) as BB1, 
  to_char(to_number(to_char(sysdate, 'yyyy')) - 1911) || to_char(sysdate,'mmdd') as BB2, 
  to_char((sysdate - 697979), 'yyymmdd') as CC1, 
  to_char((sysdate - 697979), 'yyy-mm-dd hh24:mi:ss') as CC2
from dual;

1 則留言:

  1. 這個方法沒有考慮閏年,所以會出錯哦。

    回覆刪除