問題ID: 7988

  • フォーラムは新サイトへ移行しました。
  • このフォーラムではゲスト投稿が禁止されています
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 .3 | 投稿日時 2015-7-30 15:31
tasuku0911  新米   投稿数: 2
次の関数の結果として正しいものを1つ選択して下さい。
ただし、日付書式はRR-MM-DDとします。

 MONTHS_BETWEEN('12-02-29', '12-05-31')

3
-3
-3.0322581
3.0322581

解答では、-3が正答となっていました。
Trunc関数がついているわけでもないのに、何故-3が正答なのでしょうか。私は【-3.0322581】が答えだと思いました。どなたか解説お願いします。
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2015-7-30 18:47
arashi1977  長老 居住地: 広島  投稿数: 1715
引用:
Trunc関数がついているわけでもないのに、何故-3が正答なのでしょうか。私は【-3.0322581】が答えだと思いました。
なぜ「【-3.0322581】が答えだ」と思ったを提示できるとより良い学習になるのでお勧めですよ!

それはそれとして。
解説にはない条件があるんですね。参考URLを見てみましょう。

Oracle Database SQL言語リファレンス
MONTHS_BETWEEN
http://docs.oracle.com/cd/E16338_01/server.112/b56299/functions102.htm
引用:
date1およびdate2が、月の同じ日または月の最終日の場合、結果は常に整数になります。
・2012年2月29日は2月の最終日(2012年はうるう年です)
・2012年5月31日は5月の最終日
・月の最終日同士の差を表示する(この例ではdate1がdate2より前の日付の場合、結果は負の値になる)ので、-3(ヶ月)となる

ってわけですね
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2015-7-31 9:28
tasuku0911  新米   投稿数: 2
arashi1977さん、丁寧な解答ありがとうございました!
とても解りやすくおかげ様で理解することができました。
2月と5月の差を見て「-3」
29日と31日の差を見て「-0.0322581」
と考えてしまっていました。

解説ありがとうございました!<(_ _*)>
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2015-8-5 17:22
lily02585lee  常連   投稿数: 11
お疲れ様です、
-3は正しい回答だと思います。
なんでというと、'12-02-29'は2月最後の日です、'12-05-31'は5月の最後の日です、計算する時は日も見ないことになって、月だけで計算しています。
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2015-8-10 13:37
staff_meg  長老   投稿数: 427
tasuku0911さん

ご指摘の点を修正致しました。
ご報告、誠にありがとうございました。

  >フォーラム検索へ


Copyright (c) 2020 Ping-t All rights reserved.