我想在 Oracle 10g 中创建一个表,并且我想为我的日期列指定日期格式。如果我使用以下语法:
create table datetest(
........
startdate date);
然后日期列将接受DD-MON-YY
我不想要的日期格式。
我希望我的日期列的语法是MM-DD-YYYY
请让我知道如何进行此操作。
问候,
ADATE
没有固有的格式。它不仅仅是一个恰好代表日期的字符串。Oracle 有自己的内部格式来存储日期值。
当需要将实际日期值转换为字符串时,格式就会发挥作用,反之亦然,这当然会发生很多,因为我们以交互方式将日期写为字符串。
您的数据库的默认日期格式由NLS_DATE_FORMAT
您可能设置的 settings 确定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;
日期 r 没有您建议的格式。它们在内部存储为 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')