プロが教える店舗&オフィスのセキュリティ対策術

すみません教えてください。
DB→Oracle9iで「日付A」と「日付B」の間の日数を表示させようとしているのですが、うまくいきません。
参考書などでは、「Months_Between関数」でも試してみたのですが、うまくいきません。単純なやりかたあればおしえていただきたいのですが、よろしくお願いいたします。

A 回答 (4件)

こんにちは。



Months_Betweenは、差分を月で表す場合に使います。
この場合は1ヶ月未満は小数になってしまいますね・・・。

日付だけでいいなら単純に引き算します。
SELECT to_date(日付A)-to_date(日付B)
FROM テーブル
です。
(^^ゞ

この回答への補足

回答ありがとうございます。
引き算時に書式が異なるのですが、これを変更するにはどうしたらよいでしょうか?
現在「日付A」が「YYYY/MM/DD」と「日付B」が「YYYY/MM/DD 24HHMISS」で引き算されてしまっているのですが、これを「to_date関数」で引数「'YYYY/MM/DD'」を与えて算出するとエラーがでてしまうのですがなぜでしょうか?
エラーメッセージが「ORA-01841:(周)年は-47132と+9999の間で指定しなければなりませんが、0であってはなりません。」みたいな・・・。

お願い致します。

補足日時:2004/11/15 18:00
    • good
    • 2

こんばんは。



うーん、よくわかりませんが・・・、
日付Aと日付Bはもともと何型ですか?
書式はどうですか?

書式が異なることが問題なら、あわせるだけでいいような気がしますが・・・?
(^^ゞ
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
両方ともDate型ですね。
とりあえず、精度を求められるものではないので、以降は再度自分で確認してみたいと思います。
ありがとうございました。

お礼日時:2004/11/15 19:00

単純に引き算すると「日付A」と「日付B」の間の日数を


算出出来ますよ

 SELECT
TO_DATE(「日付A) - TO_DATE(「日付B」)
FROM
DUAL;
    • good
    • 2
この回答へのお礼

回答ありがとうございます。
説明いただいた通り算術で計算できました。
ありがとうございました。

お礼日時:2004/11/15 19:02

単純に引き算でできませんか?



<例>
select trunc(sysdate) - to_date('2004/01/01') from dual;

trunc(sysdate)をto_date('2004/12/31')にすると1年間の日数が出ます。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
説明いただいた通り計算できました。
分かりやすい例題もありがとうございました。

お礼日時:2004/11/15 19:03

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