プロが教えるわが家の防犯対策術!

データとして14桁の値で日付が登録されています。
この14桁の値(YYYYMMDDHHMMSS)を日付(YYYY/MM/DD)に変換できますか?
やりたい事はこの14桁の値から現在の日付から過去1年以内のデータを取得したいと思っていますが・・・
どのようにしたらいいのでしょうか?
申し訳ありません、アドバイスいただけませんでしょうか?
宜しくお願いします。

A 回答 (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 …
でマニュアルを入手できますので、詳細はSQL リファレンスで確認して下さい。
    • good
    • 0
この回答へのお礼

回答ありがとございます。

返事が遅くなってすみません。
リファレンスを一度、読むようにします。
大変、よくわかりました。
では、失礼します。

お礼日時:2009/11/06 21:55

こんにちは。


過去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年前としてそれより大きいと判定しました。
    • good
    • 0
この回答へのお礼

回答ありがとございます。

返事が遅くなってすみません。
サンプルまで作成して、説明してくれてありがとうございます。
大変、ためになりました。
では、失礼します。

お礼日時:2009/11/06 21:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す