问题1: 插入日期时是否必须使用to_date?
INSERT INTO some_table (date1, date2)
VALUES (to_date('2012-10-24','YYYY-MM-DD'), to_date('2012-10-24','YYYY-MM-DD'));
或者只能插入字符串?这一切一切都会好吗?我已经尝试过它了。
INSERT INTO some_table (date1, date2)
VALUES ('2012-10-24',2012-10-24');
问题2: 如果我没有为我插入的列命名,会发生什么?它有效,但我的问题是它是否现在随机插入,或者在创建表时它是否按列顺序排列?
INSERT INTO some_table
VALUES ('2012-10-24',2012-10-24');
答案 0 :(得分:1)
1似乎只适用于'YYYY-MM-DD'格式: http://docs.oracle.com/cd/B28359_01/server.111/b28286/sql_elements003.htm#SQLRF51049说
您可以将DATE值指定为字符串文字...以将DATE值指定为文字,您必须使用公历。您可以指定ANSI文字... ANSI日期文字不包含时间部分,必须以“YYYY-MM-DD”格式指定。
但是,如果您使用
,它可能会随着时间的推移而发挥作用或者,您可以指定Oracle日期值... Oracle DATE值的默认日期格式由初始化参数NLS_DATE_FORMAT指定。
对于问题2,它使用表定义中的顺序。但是,在这种情况下,您必须为所有列提供值。
答案 1 :(得分:0)
Oracle支持标准SQL日期文字(自9i开始)。
DATE 后跟一个'yyyy-mm-dd'格式的字符串
DATE '2014-05-10'
它比TO_DATE短得多,并且它独立于任何NLS设置。
类似于时间戳:
TIMESTAMP '2014-05-10 09:52:35'
关于你的第二个问题:它是CREATE TABLE中定义的列的顺序。
答案 2 :(得分:0)
你甚至可以这样做:
ALTER SESSION SET NLS_DATE_FORMAT = 'MM:YYYY:DD';
INSERT INTO some_table (date1) VALUES ('05:2014:10');
...但不建议这样做。使用TO_DATE
或DATE Literal,例如而是DATE '2014-05-10'
。它让你的生活更轻松。