那个可能的sql跟踪时间吗?

时间:2015-06-27 16:26:03

标签: sql database oracle

我是sql的新生。所以最近我的讲座给了我们一个实用的。 实际文件显示错误。

INSERT INTO sales VALUES ('6380', '1111',     '2012-10-01 00:00:00', 2, '30',          'TC7777');

错误为00:00:00。正如我的演讲所说SQL不允许这种格式

所以这是我的问题: - 这可能是SQL一直跟踪,比如00:00:00吗? - 那个SQL是关键敏感的,选择和选择还是我应该养成把大概放在大写的习惯?

2 个答案:

答案 0 :(得分:0)

  

可能SQL一直在跟踪,比如00:00:00?

如果SQL表中的数据类型为Date,则默认情况下在Oracle中,日期的默认格式为仅日期,因此如果在插入数据时指定时间与日期,则会出错。

要插入带日期的时间,您必须在插入数据时转换日期格式

TO_DATE('2003/05/03 21:02:44', 'yyyy/mm/dd hh24:mi:ss')

SEE Example

您可以使用

更改此默认日期格式
alter session set nls_date_format= your date format here  

NLS_DATE_FORMAT Refer Here

  

是SQL是关键敏感的,SELECT和select或者我应该保留   把所有人都放在大写的习惯?

SQL不区分大小写,您可以使用其中一种,大写,小写甚至是Camel Case。示例: - SELECTselect或甚至Select。为了更好的可读性,首选在UPPER案例中使用所有关键字。

答案 1 :(得分:0)

仅与Oracle通信,数据库始终存储带有日期/时间戳值的时间。你只需要正确告诉它这样做。在您的示例中,您可以说:

INSERT INTO sales 
VALUES ('6380', '1111', TO_DATE('2012-10-01 00:00:00','YYYY-MM-DD HH:MI:SS')...

Oracle中日期值的默认格式由数据库中的NLS_DATE_FORMAT系统参数控制。如果未使用TO_DATE函数显式提供日期值,Oracle将期望日期字符串符合此格式。这就是你的例子中出现错误的原因。此外,如果您不提供时间值,则默认为00:00:00。

同样的原则也适用于输出。您只需选择值

即可接受日期值的默认输出
SQL> select sysdate from dual;

SYSDATE
---------
27-JUN-15

SQL> 

或者您可以使用TO_CHAR格式化它:

SQL> select TO_CHAR(sysdate, 'YYYY-MM-DD HH24:MI:SS') from dual;

TO_CHAR(SYSDATE,'YY
-------------------
2015-06-27 11:10:48

SQL>