W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
日期(DATE)字面量可以通過(guò)字符串指定,或者可以使用 ?TO_DATE
?函數(shù)將字符或數(shù)字值轉(zhuǎn)換為日期值。日期字面量是唯一接受用 ?TO_DATE
? 表達(dá)式代替字符串指定值的:
TO_DATE('2020-03-25 11:05:00', 'YYYY-MM-DD HH24:MI:SS')
使用日期值指定日期字面量時(shí),必須使用公歷的日期值。同時(shí)也可以如下所示,使用 ANSI 來(lái)指定日期字面量,ANSI 日期字面量不包含時(shí)間信息,而且必須使用 YYYY-MM-DD 的格式:
DATE '2020-03-25'
此外,還可以使用數(shù)據(jù)庫(kù)默認(rèn)日期值來(lái)指定日期字面量,當(dāng)在日期表達(dá)式中使用默認(rèn)值時(shí),OceanBase 會(huì)自動(dòng)將默認(rèn)日期格式的字符值轉(zhuǎn)換為日期值。數(shù)據(jù)庫(kù)的默認(rèn)日期值由初始化參數(shù)?NLS_DATE_FORMAT
? 指定,此示例中默認(rèn)格式為 DD-MON-RR :
TO_DATE('25-FEB-20', 'DD-MON-RR')
如果您指定不帶時(shí)間成分的日期值,則默認(rèn)時(shí)間為午夜(24 小時(shí)制 00:00:00 和 12 小時(shí)制 12:00:00)。如果指定的日期值不帶日期成分,則默認(rèn)日期為當(dāng)前月份的第一天。
OceanBase 數(shù)據(jù)庫(kù)中默認(rèn)的日期格式為 DD-MON-RR,如果需要同時(shí)顯示時(shí)間值,可以通過(guò)執(zhí)行 ?alter session set NLS_DATE_FORMAT = 'DD-MON-RR HH24:MI:SS';
?命令修改變量 ?NLS_DATE_FORMAT
? 的值。因此,如果查詢 DATE 列,則必須在查詢中指定時(shí)間字段,或確保 DATE 列中的時(shí)間字段設(shè)置為午夜。否則,數(shù)據(jù)庫(kù)可能不會(huì)返回您期望的查詢結(jié)果。比如創(chuàng)建一張具有 id 列和 datecol 日期列的表 Date_Literals:
CREATE TABLE Date_Literals (id NUMBER, datecol DATE);
在表中插入當(dāng)前會(huì)話的系統(tǒng)日期時(shí)間 SYSDATE,此示例使用了 ?TRUNC
? 函數(shù)將時(shí)間字段設(shè)置為午夜,?TRUNC
? 函數(shù)會(huì)截取 SYSDATE 的日期部分,這樣 datecol 列中的時(shí)間會(huì)自動(dòng)填充默認(rèn)的午夜時(shí)間:
INSERT INTO Date_Literals VALUES (1,SYSDATE);
INSERT INTO Date_Literals VALUES (2,TRUNC(SYSDATE));
此時(shí)表中數(shù)據(jù)為:
+------+---------------------+
| id | datecol |
+------+---------------------+
| 1 | 25-FEB-20 11:28:16 |
| 2 | 25-FEB-20 00:00:00 |
+------+---------------------+
當(dāng)查詢中不包含時(shí)間信息時(shí),可以在查詢中使用大于或小于條件,而不是等于或不等于條件:
SELECT * FROM Date_Literals WHERE datecol > TO_DATE('2020-02-24', 'YYYY-MM-DD');
返回結(jié)果:
+------+---------------------+
| id | datecol |
+------+---------------------+
| 1 | 25-FEB-20 11:28:16 |
| 2 | 25-FEB-20 00:00:00 |
+------+---------------------+
當(dāng)使用等于條件時(shí),由于查詢中不包含時(shí)間信息,所以結(jié)果只返回了時(shí)間信息為午夜值的日期:
SELECT * FROM Date_Literals WHERE datecol = TO_DATE('2020-02-25', 'YYYY-MM-DD');
返回結(jié)果:
+------+---------------------+
| id | datecol |
+------+---------------------+
| 2 | 25-FEB-20 00:00:00 |
+------+---------------------+
反過(guò)來(lái),可以過(guò)濾掉 datecol 列中的時(shí)間字段,只查詢?nèi)掌谧侄危?/p>
SELECT * FROM Date_Literals WHERE TRUNC(datecol) = DATE '2020-02-25';
返回結(jié)果:
+------+---------------------+
| id | detacol |
+------+---------------------+
| 1 | 25-FEB-20 11:28:16 |
| 2 | 25-FEB-20 00:00:00 |
+------+---------------------+
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: