Oracleの最近の記事

2008年2月 8日

TIMESTAMP型のMSECの切捨て

SQL

TO_TIMESTAMP(SUBSTR(TO_CHAR(SYSTIMESTAMP),1,17),'YY-MM-DD HH24:MI:SS')
08-02-08 14:43:25.625000→08-02-08 14:43:25.000000

SELECT
  TO_TIMESTAMP(SUBSTR(TO_CHAR(SYSTIMESTAMP),1,17),'YY-MM-DD HH24:MI:SS')
FROM
  DUAL

これってあってるのだろうか


2008年2月 6日

TIMESTAMP型からDATA型への変換

SQL

TO_DATE(SUBSTR(TO_CHAR(SYSTIMESTAMP),0,8),'YY-MM-DD')

SELECT
  TO_DATE(SUBSTR(TO_CHAR(SYSTIMESTAMP),0,8),'YY-MM-DD') a変換結果,
  SYSTIMESTAMP b元データ,
  TO_CHAR(SYSTIMESTAMP) c文字列変換,
  SUBSTR(TO_CHAR(SYSTIMESTAMP),0,8) d文字列カット
FROM
  DUAL

結果(動作確認はOracle10g)

A変換結果…2008/02/05(DATA型)
B元データ…2008/02/05 13:52:53(TIMESTAMP型)
C文字列変換…08-02-05 13:52:53.484000 +09:00
D文字列カット…08-02-05

これってあってるのだろうか

TIMESTAMPを文字列に変換して、前から8文字を切り出ししているところが
とても無理やりな気がするけれど、変換関数があるか調べても見つけることが
できなかったのでこんな方法に。