問題ID: 19840 質問

この質問の投稿一覧へ

なし 問題ID: 19840 質問

msg# 1
depth:
0
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2015-12-4 11:02
yoshizawa11  新米   投稿数: 2
現在の日付は2012年06月23日です。
1999年4月1日から現在までの日数を求めるには、どのSQL文を実行しますか(該当するものをすべて選択してください)。
ただし、実行環境は英語環境とし、デフォルトの日付の表示形式は「RR-MM-DD」とします。

(1)SELECT SYSDATE - TO_DATE('99-04-01', 'YY-MM-DD') FROM dual;
(2)○SELECT SYSDATE - TO_DATE('99-04-01', 'RR-MM-DD') FROM dual;
(3)○SELECT TO_DATE(SYSDATE, 'RR-MM-DD') - TO_DATE('99-04-01', 'RR-MM-DD') FROM dual;
(4)SELECT SYSDATE - TO_DATE('01-Apr-99') FROM dual;
(5)○SELECT SYSDATE - TO_DATE('1999-Apr-01', 'YYYY-Mon-DD') FROM dual;
(6)SELECT TO_CHAR(SYSDATE) - '99-04-01' FROM dual;

解説
日付値から日付値を減算すると、2つの日付間の日数を求めることができます。
設問では「1999年4月1日」から現在までに経過した日数を求めるので、2つの日付の日付値を取得し、減算を行います。

現在の日付の日付値はSYSDATE関数で取得することができ、「1999年4月1日」の日付値はTO_DATE関数を使用して日付値を取得します。

以上より、
・SELECT SYSDATE - TO_DATE('99-04-01', 'RR-MM-DD') FROM dual;
・SELECT SYSDATE - TO_DATE('1999-Apr-01', 'YYYY-Mon-DD') FROM dual;
・SELECT TO_DATE(SYSDATE, 'RR-MM-DD') - TO_DATE('99-04-01', 'RR-MM-DD') FROM dual;
が正解となります。



この問題の(5)がなぜ正解になるのか分かりません。
実際に実行してみても「指定した月が無効です」のエラーが出ます。
日付書式がデフォルトと異なっているので実行できないのではないのですか?

投稿ツリー

  >フォーラム検索へ


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