-- Start
DATE
DATE 由以下部分组成。
组成部分 默认值
year 当前年
month 当前月
day 01
hour 0
minute 0
second 0
怎么会有默认值呢?看了下面你就知道了。
CREATE TABLE TEST
(
COL DATE
);
-- 语法1:日期必须是环境变量 NLS_DATE_FORMAT 指定的格式
-- 查询:SELECT * FROM NLS_SESSION_PARAMETERS WHERE PARAMETER='NLS_DATE_FORMAT';
INSERT INTO TEST VALUES ('13-12月-14');
-- 语法2:DATE 'YYYY-MM-DD'
INSERT INTO TEST VALUES (DATE '2014-12-13');
-- 语法3:TO_DATE 方法
INSERT INTO TEST VALUES (TO_DATE('2014-12-13', 'YYYY-MM-DD'));
INSERT INTO TEST VALUES (TO_DATE('2014-12-13 20:30:18', 'YYYY-MM-DD HH24:MI:SS'));
-- SYSDATE 返回当前系统时间
INSERT INTO TEST VALUES (SYSDATE);
-- CURRENT_DATE 返回当前会话时区的时间
INSERT INTO TEST VALUES (CURRENT_DATE);
-- 变态的 Oracle 颠覆了我们的观念,DATE 怎么能包含时分秒呢?这将给查询带来问题
SELECT * FROM TEST WHERE COL = DATE '2014-12-13';
-- 为了确保查询没有问题,我们不得不把 DATE 条件转成范围扫描
SELECT * FROM TEST WHERE COL >= DATE '2014-12-13' AND COL < DATE '2014-12-14';
-- 我们也可以使用 TRUNC 去除时,分,秒,不过这将使索引失效
SELECT * FROM TEST WHERE TRUNC(COL