6. Q: KingbaseES和Oracle的日期和时间函数对比表
A:
KingbaseES和Oracle的日期和时间函数对比表
函数 |
KingbaseES |
Oracle |
AGE |
语法格式:AGE([expr1 日期/时间类型,] expr2 日期/时间类型) 功能: 参数 expr1 减去参数 expr2,生成一个两个日期/时间的间隔值。 参数说明: expr1 数据类型是日期/时间类型,包括 DATE、TIME、TIMETZ、TIMESTAMP 和 TIMESTAMPTZ。expr1 缺省时是 CURRENT_DATE。expr2 数据类型是日期/时间类型,包括 DATE、TIME、TIMETZ、TIMESTAMP 和 TIMESTAMPTZ。 注意,输入的日期/时间类型的 TEXT 需要用户显式指定类型,例如 CAST('2003-01-01' AS DATE),CAST('22:10:01' AS TIME),CAST('1981-10-19' AS TIMESTAMP)等等。 返回值说明: 返回值的数据类型为 INTERVAL 型。 |
Oracle中没有age函数,类似的函数months_between()判断两个日期之间的月份数量 ,如果需要计算年龄需要months_between()/12,例如:SELECT TRUNC(MONTHS_BETWEEN(SYSDATE,to_date(birthday,'yyyy-mm-dd')/12,0) FROM dual; |
CLOCK_TIMESTAMP |
语法格式: CLOCK_TIMESTAMP() 功能: 返回当前的日期和时间。 参数说明:函数无参数。 返回值说明:返回值的数据类型为TIMESTAMPTZ型。 |
Oracle中没有此函数,类似函数current_timestamp() 返回当前会话时区中的当前日期。 |
CURRENT TIMESTAMP |
等同于CURRENT_TIMESTAMP |
Oracle 10g有此函数。 |
CURRENT_DATE |
当 compatible_level 为 ‘Oracle’ 时,与 Oracle 兼容,获取当前(而不是事务开始时)的系统日期。 |
Oracle中获取当前系统时间是 select sysdate from dual;或者Select systimestamp from dual; |
CURRENT_TIME |
当 compatible_level 为 ‘Oracle’ 时,获取当前(而不是事务开始时)系统的时间(机器时间)。 |
Oracle中获取当前系统时间是 select sysdate from dual;或者Select systimestamp from dual; |
CURRENT_TIMESTAMP |
当 compatible_level 为 ‘Oracle’ 时,与 Oracle 兼容,获取当前(而不是事务开始时)系统的日期和时间(机器时间)。 |
Oracle 10g有此函数。 |
DATEADD |
KingbaseES中DATEADD函数语法格式:DATEADD(expr1 TEXT,expr2 NUMERIC,expr3 日期/时间类型) 功能: 日期加法。 返回值说明:返回值的数据类型为expr3的数据类型。 |
在Oracle 10g中有此函数,但形式上和函数语义上有较大差别。 orcale中一般使用add_months例如: to_char(add_months(to_date('199912','yyyymm'),2),'yyyymm') TO_CHA ------ 200002 或者是直接用,时间+N来得到 例如: to_char((sysdate)+1,'yyyy.mm.dd') 系统时间+1天 |
DATEDIFF |
两日期差距。 |
在Oracle 10g中有此函数,但形式上和函数语义上有较大差别。 |
DATEPART |
取日期时间中的某部分,第一个参数指定要取的部分。 |
在Oracle 10g有此函数。 |
EXTRACT |
其功能和 DATEPART 函数相同。 当 compatible_level 为 SQL 时,与 SQL 标准中对 EXTRACT 的各个域定义一致。 |
在Oracle 10g有此函数。 |
DATE_TRUNC |
DATE_TRUNC(expr1 TEXT,expr2 日期/时间类型),功能:截取日期成指定的精度(精度由第一个参数指定)。 |
Oracle中与此功能相同的函数为TRUNC()。 |
DATE_FORMAT |
在 MySQL 5.0 中有此函数,在功能和形式上基本相同。 |
Oracle没有此函数,类似的函数TO_DATE,起功能是把字符串转换为数据库中的日期类型。 |
ISFINITE |
功能:测试指定时间是否为有效时间。 |
Oracle没有此函数,也没有此功能函数。 |
LOCALTIME |
当 compatible_level 为 ‘Oracle’ 时,与 Oracle 兼容,获取当前(而不是事务开始时)系统的时间(机器时间)。 |
Oracle中获取当前系统时间是 select sysdate from dual; |
LOCALTIMESTAMP |
当 compatible_level 为 ‘Oracle’ 时,与 Oracle 兼容,获取当前(而不是事务开始时)系统的日期和时间(机器时间)。 |
Oracle中获取当前系统时间是Select systimestamp from dual; |
NOW |
返回当前事务开始的日期和时间,等效于CURRENT_TIMESTAMP。 当 compatible_level 为 ‘Oracle’ 时,与 Oracle 兼容,获取当前(而不是事务开始时)系统的日期和时间(机器时间) |
Oracle 10g CURRENT_TIMESTAMP函数与之对应。 |
STATEMENT_TIMESTAMP |
返回当前(批处理)语句开始执行的日期和时间。 |
Oracle没有此函数,也没有此功能函数。 |
STR_VALID |
相当于MSSQL中的ISDATE(expr),判断所给定的表达式是否为正确的日期时间 |
Oracle没有此函数,也没有此功能函数。 |
SYSDATE |
在KingbaseES中,默认情况下SYSDATE与CURRENT_DATE功能相同,当 compatible_level 为 ‘Oracle’ 时,与 Oracle SYSDATE 函数具有相同功能(获取当前时间,而不是事务开始时间)。 |
Oracle中获取当前系统时间是 select sysdate from dual; |
SYSTIMESTAMP |
当 compatible_level 为 ‘Oracle’ 时,与 Oracle 兼容,获取当前(而不是事务开始时)系统的时间(机器时间)。 |
Oracle中获取当前系统时间是Select systimestamp from dual; |
TIMEOFDAY |
返回当前的高精度日期和时间。 |
Oracle没有此函数,也没有此功能函数。 |
TRANSACTION_TIMESTAMP |
返回当前事务开始的日期和时间。 |
Oracle没有此函数,也没有此功能函数。 |
原文地址:https://blog.csdn.net/weixin_44146705/article/details/135355072
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。