使用Date在Oracle中创建表

时间:2012-11-13 12:48:31

标签: sql oracle oracle10g

我想在Oracle 10g中创建一个表,我想指定日期列的日期格式。如果我使用以下语法:

create table datetest(
........
startdate date);

然后日期列将接受我不想要的日期格式DD-MON-YY

我希望我的日期列的语法为MM-DD-YYYY

请告诉我如何处理此事。

此致

2 个答案:

答案 0 :(得分:6)

DATE没有固有的格式。它不仅仅是一个恰好代表日期的字符串。 Oracle有自己的内部格式来存储日期值。

格式在实际日期值需要转换为字符串时起作用,反之亦然,这当然会发生很多事情,因为交互式地我们将日期写为字符串。

数据库的默认日期格式由设置NLS_DATE_FORMAT确定,您可能已设置为DD-MON-YYYY(我认为这是美国英语语言环境的默认设置)。为方便起见,您可以在数据库级别或单个会话中更改此项,但一般来说,更明确的编程实践更安全,以便您不会出现错误,或者更糟糕的是,如果您的代码在不同的环境中运行,则会出现错误的结果

明确指定日期值的最简单方法是日期文字,即“日期”一词,后跟表示YYYY-MM-DD格式的日期的字符串,例如date '2012-11-13'。 Oracle解析器直接将其转换为相应的内部日期值。

如果您想使用其他格式,我建议您在代码中使用所需的格式模型明确使用TO_CHAR / TO_DATE。例子:

INSERT INTO my_table (my_date) VALUES ( TO_DATE( '11-13-2012', 'MM-DD-YYYY' ) );

SELECT TO_CHAR( my_date, 'MM-DD-YYYY' ) FROM my_table;

答案 1 :(得分:2)

日期rdo没有像你建议的格式。它们在内部存储为7字节数字。要在选择时格式化日期,请使用TO_CHAR(yourdatefield, 'format')

此处显示的格式均为:http://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements004.htm#i34924

eg to_char(startdate, 'mm-dd-yyyy')