SQL oracle初学者问题

时间:2014-05-10 09:47:14

标签: sql oracle

问题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');

3 个答案:

答案 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'。它让你的生活更轻松。