'yyyy-mm-dd'のような特定の形式で日付をテーブルに挿入するにはどうすればよいですか。また、使用または変換select
してはならないステートメントを使用して、上記の指定された形式で日付列の値を取得する必要があります。to_date
to_char
質問する
4011 次
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 バイトとして格納されます。
- センチュリー + 100
- 年 + 100
- 月
- 月の日
- 時間 + 1
- 分 + 1
- 秒 + 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
非常に推奨されておらず、多くの欠点があります。
- 余分な計算。日付演算を実装する必要があるたびに、暗黙的 (良い考えではありません) または明示的 (
to_date
関数を使用) のデータ型変換を使用する必要があります。 - 「日付」を異なる形式で表示する必要がある場合は毎回、
TO_CHAR(TO_DATE())
呼び出しを使用する必要があります。 - 日付がタイムゾーンに依存する場合はどうなりますか?
などなど。
したがって、日付をdate
データ型の値として保存し、TO_CHAR()
関数またはNLS_DATE_FORMA
T パラメータを使用して日付を目的の形式で表示します。
于 2012-11-01T05:15:52.890 に答える