2012-11-13 60 views
1

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

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

那么日期列将接受的日期格式DD-MON-YY,我不想。

我想为我的日期列的语法是MM-DD-YYYY

请让我知道如何与此进行。

问候,

回答

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;