1

与えられた 2 桁の年コード (YY) が 19XX か 20XX かを知るにはどうすればよいでしょうか? たとえば、 と入力する07-apr-1010、年1910または2010?

4

3 に答える 3

1

一般的に言えば、RRdatetime 形式要素を使用して、2 桁の年を完全な年に変換する必要があります。

指定された 2 桁の年が 00 から 49 の場合、

  • 現在の年の下 2 桁が 00 から 49 の場合、返される年の上 2 桁は現在の年と同じになります。
  • 現在の年の下 2 桁が 50 から 99 の場合、返される年の上 2 桁は、現在の年の上 2 桁よりも 1 大きくなります。

指定された 2 桁の年が 50 から 99 の場合、

  • 現在の年の下 2 桁が 00 から 49 の場合、返される年の上 2 桁は、現在の年の上 2 桁よりも 1 少なくなります。
  • 現在の年の下 2 桁が 50 ~ 99 の場合、返される年の上 2 桁は現在の年と同じになります。

YY不足している数字は常に現在の年の数字で埋められるため、必要ないと思います。例えば:

SELECT TO_CHAR(TO_DATE('98', 'YY'), 'YYYY') FROM dual; -- returns 2098, not 1998
SELECT TO_CHAR(TO_DATE('9',  'Y'),  'YYYY') FROM dual; -- returns 2019
SELECT TO_CHAR(TO_DATE('98', 'RR'), 'YYYY') FROM dual; -- returns 1998 (until we get to 2050)
于 2015-09-17T10:53:12.233 に答える
0

これを確認するには:

まず、YY 年形式の CHAR を日付に変換する必要があります。

TO_DATE('20-01-15','DD-MM-YY');

その後すぐに CHAR に変換し、以下のような出力を確認します。

SELECT TO_CHAR(TO_DATE('20-01-15','DD-MM-YY'),'YYYY') FROM DUAL;
于 2015-09-17T10:43:00.727 に答える
0

編集: 申し訳ありませんが、私のクライアント設定には YY しかありませんでした。YYYY を追加した後、結果を下回っています。したがって、デフォルトでは YY は 20YY かかるように見えます

 select to_date('7/10/15','DD/MM/YY') from dual;
 07-OCT-2015

 select to_date('7/10/15','DD/MM/YYYY')  from dual;
 07-OCT-0015
于 2015-09-17T10:37:47.130 に答える