可获得性
本特性自MogDB 5.0.0版本开始引入。
特性简介
支持current_date/current_time作为表的字段名进行操作。
客户价值
增强MogDB与Oracle的兼容性,减少应用程序的迁移代价。
特性描述
数据库中,current_date和current_time作为系统函数,用于返回当前系统日期和系统时间,并且作为RESERVED_KEYWORD关键字不能用于表字段名。本特性支持将current_date/current_time用作表的字段名进行操作,以兼容应用程序开发。
特性约束
- 目前只支持current_date/current_time作为字段名在CREATE TABLE时成功;
- 其他DML操作,如SELECT/DELETE/UPDATE由于和current_date系统函数存在歧义,暂不支持操作。(相关操作需要加双引号处理)
- 目前current_date/current_time在check约束里还是定义为系统函数而非字段,识别为字段需要加双引号处理。
示例
-- CREATE TABLE操作
MogDB=# CREATE TABLE test_date(current_date date);
CREATE TABLE
MogDB=# CREATE TABLE test_time(current_time time);
CREATE TABLE
-- UPDATE操作
MogDB=# UPDATE test SET current_date = '2022-12-14';
UPDATE 1
MogDB=# CREATE TABLE test(current_date date);
CREATE TABLE
MogDB=# INSERT INTO test VALUES ('2022-12-15');
INSERT 0 1
MogDB=# SELECT * FROM test;
current_date
---------------------
2022-12-15 00:00:00
(1 row)
-- SELECT操作会作为系统函数返回当前日期或时间,字段操作需加双引号。
MogDB=# SELECT current_date FROM test;
date
------------
2022-12-16
(1 row)
MogDB=# SELECT "current_date" FROM test;
current_date
---------------------
2022-12-15 00:00:00 注:加双引号显示字段值日期。
(1 row)
-- DELETE操作默认为是系统函数操作,字段操作需要双引号。
MogDB=# DELETE FROM test WHERE CURRENT_DATE = '2022-12-14';
DELETE 0
MogDB=# SELECT * FROM test;
current_date
---------------------
2022-12-14 00:00:00
(1 row)
MogDB=# DELETE FROM test WHERE "current_date" = '2022-12-14';
DELETE 1
MogDB=# SELECT * FROM test ;
current_date
--------------
(0 rows)
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




