在oracle中将日期作为dd-mon-yy插入

时间:2015-10-28 14:57:36

标签: oracle oracle11g

我正在尝试将日期值作为dd-mon-yy插入,但数据库将其存储为dd / mm / yy。

例如:INSERT INTO tablename VALUES(to_date(' 01-mar-09',' dd-mon-yy');

数据库将其存储为01/03/09。这是为什么?我不能把它存放在09年3月1日吗?

请帮忙。

2 个答案:

答案 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