KingbaseESV7和oracle日期和时间函数对比

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没有此函数,也没有此功能函数。

  • 26
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值