如何以特定格式(例如'yyyy-mm-dd')将日期插入表中,我需要使用select
语句检索上述指定格式的日期列的值不应使用to_date
或to_char
转换。
答案 0 :(得分:2)
您不应该使用其他格式插入它,而是在您打算使用它时重新格式化日期
SELECT TO_CHAR(date, 'DD/MM/YYYY') AS date FROM table;
// will give: day/month/year
我不明白为什么不使用TO_CHAR只是因为这样做。
答案 1 :(得分:2)
日期存储为7个字节:
世纪和年份都有抵消(100)分别允许负世纪和年份(BC日期需要)。并且小时,分钟,秒都有+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参数以显示日期以所需格式存储。