我正在尝试将日期值作为dd-mon-yy插入,但数据库将其存储为dd / mm / yy。
例如:INSERT INTO tablename VALUES(to_date(' 01-mar-09',' dd-mon-yy');
数据库将其存储为01/03/09。这是为什么?我不能把它存放在09年3月1日吗?
请帮忙。
答案 0 :(得分:2)
Oracle不会将日期存储为任何格式..它只是存储"日期"。您正在查看它/以不同的格式显示它。检查你的nls_date设置。
SQL> select sysdate from dual;
SYSDATE
---------
28-OCT-15
SQL> alter session set nls_date_format='dd-mon-yyyy hh24:mi:ss'
Session altered.
SQL> select sysdate from dual;
SYSDATE
--------------------
28-oct-2015 11:00:56
SQL>
答案 1 :(得分:2)
Date是原始数据类型。它没有要保存的格式。由您或环境/会话决定如何显示它。根据需要使用NLS_DATE_FORMAT
参数...使用alter session或使用to_char()
函数
alter session set nls_date_format = 'DD-MON-YY';
select sysdate from dual;
28-OCT-15
alter session set nls_date_format = 'MM/DD/YY';
select sysdate from dual;
10/28/15
NLS参数优先级如下决定,如果未在会话级别设置则使用实例级别,如果未在实例级别设置,则使用在数据库级别存在的级别。以下是在每个级别提供设定值的视图
NLS_SESSION_PARAMETERS => session level parameters
NLS_INSTANCE_PARAMETERS => instance level parameters
NLS_DATABASE_PARAMETERS => database level parameters