助け合いフォーラム
Oracle Master Silver SQL 2019(1Z0-071)
問題ID : 26481
問題を開く
実行結果が"12-04-01"と表示されるのはどの問い合わせですか(該当するものを全て選択して下さい)。
ただし、データベースの実行環境は日本語環境とし、日付書式はRR-MM-DDとします。
※ 2012年3月26日は月曜日です。
ただし、データベースの実行環境は日本語環境とし、日付書式はRR-MM-DDとします。
※ 2012年3月26日は月曜日です。
正解
SELECT ROUND(TO_DATE('12-04-10'), 'MONTH') FROM dual;
SELECT LAST_DAY('12-03-01') + 1 FROM dual;
SELECT NEXT_DAY('12-03-26', '日') FROM dual;
解説
TO_DATE関数は文字リテラルを日付値に変換します。引数に時刻が指定されていない場合は午前0時0分0秒に設定されます。
選択肢を1つずつ確認してみましょう。
・SELECT ROUND(TO_DATE('12-04-10'), 'MONTH') FROM dual;
ROUND関数の書式に"MONTH"が指定されているので、丸めて当月の1日が返されます。したがって実行結果は"12-04-01"となります。
・SELECT LAST_DAY('12-03-01') + 1 FROM dual;
LAST_DAY関数で当月の最終日を求めると"12-03-31"となります。その後で1日を加算しているので、翌日の"12-04-01"が返されます。
・SELECT NEXT_DAY('12-03-26', '日') FROM dual;
"12-03-26"は月曜日です。NEXT_DAY関数で翌日以降で最初の日曜日が返されます。したがって実行結果は"12-04-01"となります。
・SELECT ROUND(TO_DATE('12-04-10'), 'DD') FROM dual;
TO_DATE('12-04-10')では時刻は午前0時に設定されます。ROUND関数の書式に"DD"が指定されているので、丸めて当日の午前0時が返されます(つまり変化なし)。したがって実行結果は"12-04-10"となります。
・SELECT TRUNC(TO_DATE('12-04-10'), 'DD') FROM dual;
TO_DATE('12-04-10')では時刻は午前0時に設定されます。TRUNC関数の書式に"DD"が指定されているので、切り捨てて当日の午前0時が返されます(つまり変化なし)。したがって実行結果は"12-04-10"となります。
・SELECT ADD_MONTHS('12-01-01', 4) FROM dual;
"12-01-01"の4ヶ月後ですので、実行結果は"12-05-01"となります。
以上より、
・SELECT ROUND(TO_DATE('12-04-10'), 'MONTH') FROM dual;
・SELECT LAST_DAY('12-03-01') + 1 FROM dual;
・SELECT NEXT_DAY('12-03-26', '日') FROM dual;
が正解となります。
正解のSQL文の実行結果は次のようになります。
参考:
主な日付関数は次のとおりです。
選択肢を1つずつ確認してみましょう。
・SELECT ROUND(TO_DATE('12-04-10'), 'MONTH') FROM dual;
ROUND関数の書式に"MONTH"が指定されているので、丸めて当月の1日が返されます。したがって実行結果は"12-04-01"となります。
・SELECT LAST_DAY('12-03-01') + 1 FROM dual;
LAST_DAY関数で当月の最終日を求めると"12-03-31"となります。その後で1日を加算しているので、翌日の"12-04-01"が返されます。
・SELECT NEXT_DAY('12-03-26', '日') FROM dual;
"12-03-26"は月曜日です。NEXT_DAY関数で翌日以降で最初の日曜日が返されます。したがって実行結果は"12-04-01"となります。
・SELECT ROUND(TO_DATE('12-04-10'), 'DD') FROM dual;
TO_DATE('12-04-10')では時刻は午前0時に設定されます。ROUND関数の書式に"DD"が指定されているので、丸めて当日の午前0時が返されます(つまり変化なし)。したがって実行結果は"12-04-10"となります。
・SELECT TRUNC(TO_DATE('12-04-10'), 'DD') FROM dual;
TO_DATE('12-04-10')では時刻は午前0時に設定されます。TRUNC関数の書式に"DD"が指定されているので、切り捨てて当日の午前0時が返されます(つまり変化なし)。したがって実行結果は"12-04-10"となります。
・SELECT ADD_MONTHS('12-01-01', 4) FROM dual;
"12-01-01"の4ヶ月後ですので、実行結果は"12-05-01"となります。
以上より、
・SELECT ROUND(TO_DATE('12-04-10'), 'MONTH') FROM dual;
・SELECT LAST_DAY('12-03-01') + 1 FROM dual;
・SELECT NEXT_DAY('12-03-26', '日') FROM dual;
が正解となります。
正解のSQL文の実行結果は次のようになります。
SQLを表示
SELECT ROUND(TO_DATE('12-04-10'), 'MONTH')
FROM dual;
FROM dual;
SQLを表示
SELECT LAST_DAY('12-03-01') + 1
FROM dual;
FROM dual;
SQLを表示
SELECT NEXT_DAY('12-03-26', '日')
FROM dual;
FROM dual;
参考:
主な日付関数は次のとおりです。
26481の答え
m
mmmss125
投稿日 2023/01/08
・SELECT NEXT_DAY('12-03-26', '日') FROM dual;
"12-03-26"は月曜日です。NEXT_DAY関数で翌日以降で最初の日曜日が返されます。したがって実行結果は"12-04-01"となります。
これって答えは4月2日ではないですか?
2023/01/10 17:05
問題文
実行結果が"12-04-01"と表示されるのはどの問い合わせですか(該当するものを全て選択して下さい)。
ただし、データベースの実行環境は日本語環境とし、日付書式はRR-MM-DDとします。
※ 2012年3月26日は月曜日です。
27日(火)
28日(水)
29日(木)
30日(金)
31日(土)
4/1日(日)
コメント
この投稿に対して返信しませんか?
k kiori
2024/05/10 19:17
4月31日なんてありませんよ…