我想在Oracle 10g中创建表,并且想要指定日期列的日期格式。如果我使用下面的语法:在Oracle中使用日期创建表
create table datetest(
........
startdate date);
那么日期列将接受的日期格式DD-MON-YY
,我不想。
我想为我的日期列的语法是MM-DD-YYYY
请让我知道如何与此进行。
问候,
我想在Oracle 10g中创建表,并且想要指定日期列的日期格式。如果我使用下面的语法:在Oracle中使用日期创建表
create table datetest(
........
startdate date);
那么日期列将接受的日期格式DD-MON-YY
,我不想。
我想为我的日期列的语法是MM-DD-YYYY
请让我知道如何与此进行。
问候,
甲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;
日期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')