1

'yyyy-mm-dd'のような特定の形式で日付をテーブルに挿入するにはどうすればよいですか。また、使用または変換selectしてはならないステートメントを使用して、上記の指定された形式で日付列の値を取得する必要があります。to_dateto_char

4

2 に答える 2

2

別の形式で挿入しないでください。代わりに、使用するたびに日付を再フォーマットします

SELECT TO_CHAR(date, 'DD/MM/YYYY') AS date FROM table;
// will give: day/month/year

それがその方法だからといって、TO_CHARを使用しない理由がわかりません。

于 2012-11-01T04:42:10.820 に答える
2

日付は 7 バイトとして格納されます。

  1. センチュリー + 100
  2. 年 + 100
  3. 月の日
  4. 時間 + 1
  5. 分 + 1
  6. 秒 + 1

世紀と年には両方ともオフセット (100) があり、それぞれ負の世紀と年を許可します (紀元前の日付に必要)。また、時、分、秒にはオフセット +1 があり、日付自体に NULL が含まれないようにしています。関数を使用dumpして、日付の内部表現を取得できます。

SQL> create table TB_Date(
  2    dt date
  3  )
  4  ;

Table created

SQL> insert into tb_date(dt) values(sysdate);

1 row inserted

SQL> commit;

Commit complete

SQL> select dump(dt) from tb_date;

DUMP(DT)
------------------------------------
Typ=12 Len=7: 120,112,11,1,9,49,26  

ただし、メモリ内の日付の表現はわずかに異なります (長さ 8 バイト)。

日付 (データ型のデータ) を特定の形式で保存することはできませんがDATE、特定の形式で表示することはできます。また、日付の表示方法のデフォルト形式は、NLS_DATE_FORMATパラメーターによって定義されます。はい、データ型の列に特定の形式で日付を格納できますが、varchar2非常に推奨されておらず、多くの欠点があります。

  1. 余分な計算。日付演算を実装する必要があるたびに、暗黙的 (良い考えではありません) または明示的 (to_date関数を使用) のデータ型変換を使用する必要があります。
  2. 「日付」を異なる形式で表示する必要がある場合は毎回、TO_CHAR(TO_DATE())呼び出しを使用する必要があります。
  3. 日付がタイムゾーンに依存する場合はどうなりますか?

などなど。

したがって、日付をdateデータ型の値として保存し、TO_CHAR()関数またはNLS_DATE_FORMAT パラメータを使用して日付を目的の形式で表示します。

于 2012-11-01T05:15:52.890 に答える