- ベストアンサー
日数算出SQL
すみません教えてください。 DB→Oracle9iで「日付A」と「日付B」の間の日数を表示させようとしているのですが、うまくいきません。 参考書などでは、「Months_Between関数」でも試してみたのですが、うまくいきません。単純なやりかたあればおしえていただきたいのですが、よろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 Months_Betweenは、差分を月で表す場合に使います。 この場合は1ヶ月未満は小数になってしまいますね・・・。 日付だけでいいなら単純に引き算します。 SELECT to_date(日付A)-to_date(日付B) FROM テーブル です。 (^^ゞ
その他の回答 (3)
- taka451213
- ベストアンサー率47% (436/922)
こんばんは。 うーん、よくわかりませんが・・・、 日付Aと日付Bはもともと何型ですか? 書式はどうですか? 書式が異なることが問題なら、あわせるだけでいいような気がしますが・・・? (^^ゞ
お礼
回答ありがとうございます。 両方ともDate型ですね。 とりあえず、精度を求められるものではないので、以降は再度自分で確認してみたいと思います。 ありがとうございました。
- _tomo_
- ベストアンサー率28% (2/7)
単純に引き算すると「日付A」と「日付B」の間の日数を 算出出来ますよ SELECT TO_DATE(「日付A) - TO_DATE(「日付B」) FROM DUAL;
お礼
回答ありがとうございます。 説明いただいた通り算術で計算できました。 ありがとうございました。
- gole
- ベストアンサー率66% (2/3)
単純に引き算でできませんか? <例> select trunc(sysdate) - to_date('2004/01/01') from dual; trunc(sysdate)をto_date('2004/12/31')にすると1年間の日数が出ます。
お礼
回答ありがとうございました。 説明いただいた通り計算できました。 分かりやすい例題もありがとうございました。
補足
回答ありがとうございます。 引き算時に書式が異なるのですが、これを変更するにはどうしたらよいでしょうか? 現在「日付A」が「YYYY/MM/DD」と「日付B」が「YYYY/MM/DD 24HHMISS」で引き算されてしまっているのですが、これを「to_date関数」で引数「'YYYY/MM/DD'」を与えて算出するとエラーがでてしまうのですがなぜでしょうか? エラーメッセージが「ORA-01841:(周)年は-47132と+9999の間で指定しなければなりませんが、0であってはなりません。」みたいな・・・。 お願い致します。