文档中心MogDBMogDB StackUqbar
v5.0

文档:v5.0

支持的版本:

其他版本:

支持current_date/current_time关键字作为字段名

可获得性

本特性自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)
Copyright © 2011-2024 www.enmotech.com All rights reserved.