我想在Oracle 10g中创建一个表,我想指定日期列的日期格式。如果我使用以下语法:
create table datetest(
........
startdate date);
然后日期列将接受我不想要的日期格式DD-MON-YY
。
我希望我的日期列的语法为MM-DD-YYYY
请告诉我如何处理此事。
此致
答案 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')