我是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是关键敏感的,选择和选择还是我应该养成把大概放在大写的习惯?
答案 0 :(得分:0)
可能SQL一直在跟踪,比如00:00:00?
如果SQL表中的数据类型为Date
,则默认情况下在Oracle中,日期的默认格式为仅日期,因此如果在插入数据时指定时间与日期,则会出错。
要插入带日期的时间,您必须在插入数据时转换日期格式
TO_DATE('2003/05/03 21:02:44', 'yyyy/mm/dd hh24:mi:ss')
您可以使用
更改此默认日期格式alter session set nls_date_format= your date format here
是SQL是关键敏感的,SELECT和select或者我应该保留 把所有人都放在大写的习惯?
SQL不区分大小写,您可以使用其中一种,大写,小写甚至是Camel Case。示例: - SELECT
或select
或甚至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>