助け合いフォーラム

Oracle DB

Oracle Master Silver SQL 2019(1Z0-071)
問題ID : 26477
問題を開く
TO_DATE関数で文字列を日付値に変換します。
日付書式の指定方法として誤っているものはどれですか。

正解

TO_DATE('2012年5月21日', 'YYYY年MM月DD日')

解説

TO_DATE関数の日付書式には日時書式要素の他、文字も含めることができますが、半角記号以外の文字は二重引用符(")で囲まなければなりません。
二重引用符(")で囲まれていない場合は、エラーとなります。

以上より、
TO_DATE('2012年5月21日', 'YYYY年MM月DD日')
が正解となります。

正解のTO_DATE関数の実行結果は次のようになります。


 
SQLを表示
SELECT TO_DATE('2012年5月21日', 'YYYY年MM月DD日')
FROM dual;


その他の選択肢については次のとおりです。

・TO_DATE('2012年5月21日', 'YYYY"年"MM"月"DD"日"')


 
SQLを表示
SELECT TO_DATE('2012年5月21日', 'YYYY"年"MM"月"DD"日"')
FROM dual;


・TO_DATE('2012年5月21日', 'YY"年"MM"月"DD"日"')


 
SQLを表示
SELECT TO_DATE('2012年5月21日', 'YY"年"MM"月"DD"日"')
FROM dual;


・TO_DATE('2012年5月21日', 'RR"年"MM"月"DD"日"')


 
SQLを表示
SELECT TO_DATE('2012年5月21日', 'RR"年"MM"月"DD"日"')
FROM dual;

参考

TO_DATE関数は、文字列を指定された書式に従って日付値に変換する関数です。
書式は以下の通りです。

 TO_DATE(文字列 [, '日付書式'] [, NLSパラメータ])

 
 
SQLを表示
SELECT TO_DATE('2012-5-21', 'YYYY-MM-DD')
FROM dual;


日付書式は文字列を日付値に変換する際のフォーマットです。日付書式に使用できる主な要素は次のとおりです。



日付書式には上記の要素の他に「-」,「/」,「.」,「:」などの半角記号を含めることができ、それらはそのまま表示されます。
アルファベットやひらがな、漢字などを日付書式に含めたい場合は二重引用符(")で囲んで指定します。二重引用符(")で囲んでいない場合はエラーとなります。


 
SQLを表示
SELECT TO_DATE('2012年5月21日', 'YYYY"年"MM"月"DD"日"')
FROM dual;



 
SQLを表示
SELECT TO_DATE('2012年5月21日', 'YYYY年MM月DD日')
FROM dual;


なお、日付書式が省略された場合は、セッションのデフォルトの日付書式が使用されます。NLSパラメータが省略された場合も、セッションのデフォルト値が使用されます。

[日付書式要素 YY と RR の違い]
日付書式の要素である「YY」と「RR」はどちらも年の下2桁を表しますが、世紀の取扱に違いがあります。



現在の年が2012年の場合に、日付書式を「YY」、「RR」、値を15、75とすると、それぞれ次のようになります。


 
SQLを表示
SELECT TO_CHAR(TO_DATE('15/12/31', 'YY/MM/DD'), 'YYYY/MM/DD')
FROM dual;

SELECT TO_CHAR(TO_DATE('75/12/31', 'YY/MM/DD'), 'YYYY/MM/DD')
FROM dual;



 
SQLを表示
SELECT TO_CHAR(TO_DATE('15/12/31', 'RR/MM/DD'), 'YYYY/MM/DD')
FROM dual;

SELECT TO_CHAR(TO_DATE('75/12/31', 'RR/MM/DD'), 'YYYY/MM/DD')
FROM dual;
上に戻る

YYについて

投稿日 2025/08/02

TO_DATE('2012年5月21日', 'YY"年"MM"月"DD"日"')について
RRは2桁も4桁も対応できる認識ですが、YYは2桁のみしか対応できないとどこかに記載されてた気がするのですが、これは正しく動作するのでしょうか?


j junext25

2025/08/02 15:58

実際明記された資料はありませんでしたが、 Copilotに聞くと、公式では2桁で4桁あつかえるのはRRの方のみで、YYの場合,2桁の時はYY、4桁の時はYYYYが推奨とありました。 試験的にはYY2桁は4桁でも動作するでいいのでしょうか?

2025/08/04 17:24

https://docs.oracle.com/cd/F19136_01/sqlrf/Format-Models.html#SQLRF-GUID-5B755E80-3CB2-4901-BBCF-F0FC764E0BB5

RRのかわりにRRRRが、YYのかわりにYYYYが適用されて試行されるとのことなので、どちらも2桁も4桁も対応していると言って良いのではと思います。

実試験的には、この点の知識で迷わせるような問題が出ないことを祈りたいですね。


コメント

この返信に対して
コメントを記入できます

この投稿に対して返信しませんか?