- ベストアンサー
14桁の日付(YYYYMMDDHHMMSS)を日付(YYYY/MM/DD)に変換できますか?
データとして14桁の値で日付が登録されています。 この14桁の値(YYYYMMDDHHMMSS)を日付(YYYY/MM/DD)に変換できますか? やりたい事はこの14桁の値から現在の日付から過去1年以内のデータを取得したいと思っていますが・・・ どのようにしたらいいのでしょうか? 申し訳ありません、アドバイスいただけませんでしょうか? 宜しくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちわ。 > この14桁の値(YYYYMMDDHHMMSS)を日付(YYYY/MM/DD)に変換できますか? 文字型データを日付に変換するのであれば、TO_DATE() を使用します。 単純に変換する場合は、to_date(col, 'YYYYMMDDHHMISS') です。 ※ 時間は24時間表記の'HH24' の可能性もあるので確認して下さい。 今年1の1月1日からと言う事であれば、変換した日付を年で切り捨てます。 → trunc(to_date(col, 'YYYYMMDDHH24MISS')) 正確に1年前であれば、add_months で12ヶ月前を算出します。 → add_months(to_date(col, 'YYYYMMDDHH24MISS'), -12) 更に月で切り捨てれば、該当月の1日を算出できます。 → trunc(add_months(to_date(col, 'YYYYMMDDHH24MISS'), -12), 'MM') OTN Japan (http://www.oracle.com/technology/global/jp/index.html) でマニュアルを入手できますので、詳細はSQL リファレンスで確認して下さい。
その他の回答 (1)
- you9292
- ベストアンサー率0% (0/1)
こんにちは。 過去1年以内のデータを取得したいのならば下記でどうでしょうか。 SQL> desc test; 名前 NULL? 型 -------------------- ------- ---------------------------- VCDT VARCHAR2(14) SQL> select * from test; VCDT ---------------------------- 20081002161322 20081120161322 SQL> select * from test 2 where vcdt >= to_char(add_months(sysdate,-12),'yyyymmddhh24miss'); VCDT ---------------------------- 20081120161322 本日を1年前としてそれより大きいと判定しました。
お礼
回答ありがとございます。 返事が遅くなってすみません。 サンプルまで作成して、説明してくれてありがとうございます。 大変、ためになりました。 では、失礼します。
お礼
回答ありがとございます。 返事が遅くなってすみません。 リファレンスを一度、読むようにします。 大変、よくわかりました。 では、失礼します。