codecamp

OceanBase 日期字面量

日期(DATE)字面量可以通过字符串指定,或者可以使用 ​TO_DATE​函数将字符或数字值转换为日期值。日期字面量是唯一接受用 ​TO_DATE​ 表达式代替字符串指定值的:

TO_DATE('2020-03-25 11:05:00', 'YYYY-MM-DD HH24:MI:SS')

使用日期值指定日期字面量时,必须使用公历的日期值。同时也可以如下所示,使用 ANSI 来指定日期字面量,ANSI 日期字面量不包含时间信息,而且必须使用 YYYY-MM-DD 的格式:

DATE '2020-03-25'

此外,还可以使用数据库默认日期值来指定日期字面量,当在日期表达式中使用默认值时,OceanBase 会自动将默认日期格式的字符值转换为日期值。数据库的默认日期值由初始化参数​NLS_DATE_FORMAT​ 指定,此示例中默认格式为 DD-MON-RR :

TO_DATE('25-FEB-20', 'DD-MON-RR')

如果您指定不带时间成分的日期值,则默认时间为午夜(24 小时制 00:00:00 和 12 小时制 12:00:00)。如果指定的日期值不带日期成分,则默认日期为当前月份的第一天。

OceanBase 数据库中默认的日期格式为 DD-MON-RR,如果需要同时显示时间值,可以通过执行 ​alter session set NLS_DATE_FORMAT = 'DD-MON-RR HH24:MI:SS'; ​命令修改变量 ​NLS_DATE_FORMAT​ 的值。因此,如果查询 DATE 列,则必须在查询中指定时间字段,或确保 DATE 列中的时间字段设置为午夜。否则,数据库可能不会返回您期望的查询结果。比如创建一张具有 id 列和 datecol 日期列的表 Date_Literals

CREATE TABLE Date_Literals (id NUMBER, datecol DATE);

在表中插入当前会话的系统日期时间 SYSDATE,此示例使用了 ​TRUNC​ 函数将时间字段设置为午夜,​TRUNC​ 函数会截取 SYSDATE 的日期部分,这样 datecol 列中的时间会自动填充默认的午夜时间:

INSERT INTO Date_Literals VALUES (1,SYSDATE);
INSERT INTO Date_Literals VALUES (2,TRUNC(SYSDATE));

此时表中数据为:

+------+---------------------+
| id   | datecol             |
+------+---------------------+
|    1 | 25-FEB-20 11:28:16  |
|    2 | 25-FEB-20 00:00:00  |
+------+---------------------+

当查询中不包含时间信息时,可以在查询中使用大于或小于条件,而不是等于或不等于条件:

SELECT * FROM Date_Literals WHERE datecol > TO_DATE('2020-02-24', 'YYYY-MM-DD');

返回结果:

+------+---------------------+
| id   | datecol             |
+------+---------------------+
|    1 | 25-FEB-20 11:28:16  |
|    2 | 25-FEB-20 00:00:00  |
+------+---------------------+

当使用等于条件时,由于查询中不包含时间信息,所以结果只返回了时间信息为午夜值的日期:

SELECT * FROM Date_Literals WHERE datecol = TO_DATE('2020-02-25', 'YYYY-MM-DD');

返回结果:

+------+---------------------+
| id   | datecol             |
+------+---------------------+
|    2 | 25-FEB-20 00:00:00  |
+------+---------------------+

反过来,可以过滤掉 datecol 列中的时间字段,只查询日期字段:

SELECT * FROM Date_Literals WHERE TRUNC(datecol) = DATE '2020-02-25';

返回结果:

+------+---------------------+
| id   | detacol             |
+------+---------------------+
|    1 | 25-FEB-20 11:28:16  |
|    2 | 25-FEB-20 00:00:00  | 
+------+---------------------+
OceanBase 数值字面量
OceanBase 时间戳字面量
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

OceanBase 控制台指南

OceanBase ODC 使用指南

OceanBase Web 版 ODC

OceanBase 客户端版 ODC

OceanBase Connector/J 开发者指南

OceanBase 什么是OceanBase Connector/J

OceanBase SQL 参考(MySQL 模式)

OceanBase SQL 参考(Oracle 模式)

OceanBase 基本元素

OceanBase 数据库对象

OceanBase 函数

OceanBase 单行函数

OceanBase 返回数字的字符串函数

OceanBase 通用比较函数

OceanBase 编码解码函数

OceanBase SQL 调优指南

OceanBase 相关协议

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }