文档首页 > > 工具指南> Migration Tool SQL语法迁移工具> Oracle语法迁移> 系统函数> 日期函数

日期函数

分享
更新时间: 2019/08/09 GMT+08:00

本节介绍如下日期函数:

ADD_MONTHS

ADD_MONTHS是Oracle系统函数,DWS中并不隐式支持该函数。

说明:

在使用此功能之前,请执行如下操作:

  1. 创建并使用MIG_ORA_EXT模式。
  2. 复制custom scripts文件的内容,并在要执行迁移的所有目标数据库中执行此脚本。详情请参见自定义数据库配置迁移流程
  • date参数为datetime类型。
  • integer参数是integer类型。

返回类型为date。

输入:ADD_MONTHS

SELECT
          TO_CHAR( ADD_MONTHS ( hire_date ,1 ) ,'DD-MON-YYYY' ) "Next month"
     FROM
          employees
     WHERE
          last_name = 'Baer'
;

输出

SELECT
          TO_CHAR( MIG_ORA_EXT.ADD_MONTHS ( hire_date ,1 ) ,'DD-MON-YYYY' ) "Next month"
     FROM
          employees
     WHERE
          last_name = 'Baer'
;

DATE_TRUNC

DATE_TRUNC函数返回日期,将日期的时间部分截断为格式模型fmt指定的单位。

输入

select trunc(to_char(trunc(add_months(sysdate,-12),'MM'),'YYYYMMDD')/100) into v_start_date_s from dual;
select trunc(to_char(trunc(sysdate,'mm'),'YYYYMMDD')/100) into v_end_date_e from dual;
ID_MNTH>=TRUNC(TO_CHAR(ADD_MONTHS(to_date(to_char('||v_curr_date||'),''YYYYMMDD''),-12),''YYYYMMDD'')/100))
AND ID_MNTH>=TRUNC(TO_CHAR(ADD_MONTHS(to_date(to_char('||v_curr_date||'),''YYYYMMDD''),-12),''YYYYMMDD'')/100))

select TRUNC(to_char(add_months(trunc(TO_DATE(TO_CHAR(P_DATE),'YYYYMMDD'),'MM')-1,-2),'YYYYMMDD')/100) INTO START_MONTH from dual; 
select TRUNC(TO_CHAR(trunc(TO_DATE(TO_CHAR(P_DATE),'YYYYMMDD'),'MM')-1,'YYYYMMDD')/100) INTO END_MONTH from dual;

输出

SELECT Trunc(To_char(Date_trunc ('MONTH', mig_ora_ext.Add_months (SYSDATE, -12)) , 'YYYYMMDD') / 100) 
INTO   v_start_date_s 
FROM   dual; 

SELECT Trunc(To_char(Date_trunc ('MONTH', SYSDATE), 'YYYYMMDD') / 100) 
INTO   v_end_date_e 
FROM   dual; 

SELECT Trunc(To_char(mig_ora_ext.Add_months (Date_trunc ('MONTH', To_date(To_char(p_date), 'YYYYMMDD' )) - 1 , -2), 'YYYYMMDD') / 100) 
INTO   start_month 
FROM   dual;

SELECT Trunc(To_char(Date_trunc ('MONTH', To_date(To_char(p_date), 'YYYYMMDD')) - 1, 'YYYYMMDD') / 100) 
INTO   end_month 
FROM   dual; 

LAST_DAY

Oracle的LAST_DAY函数根据date(日期)值返回该月份的最后一天。

LAST_DAY(date)

不论date的数据类型如何,返回类型始终为DATE。

LAST_DAY是Oracle的系统函数,DWS并不隐式支持该函数。要支持此函数,Migration Tool会在MIG_ORA_EXT模式中创建一个LAST_DAY函数。迁移后的语句将使用此新函数MIG_ORA_EXT.LAST_DAY,如下示例。

说明:

在使用此功能之前,请执行如下操作:

  1. 创建并使用MIG_ORA_EXT模式。
  2. 复制custom scripts文件的内容,并在要执行迁移的所有目标数据库中执行此脚本。详情请参见自定义数据库配置迁移流程

输入:LAST_DAY

 SELECT
          to_date( '01/' || '07/' || to_char( sysdate ,'YYYY' ) ,'dd/mm/yyyy' ) FIRST
          ,last_day( to_date( '01/' || '07/' || to_char( sysdate ,'YYYY' ) ,'dd/mm/yyyy' ) ) last__day
   FROM
          dual;

输出

SELECT
          to_date( '01/' || '07/' || to_char( sysdate ,'YYYY' ) ,'dd/mm/yyyy' ) FIRST
          ,MIG_ORA_EXT.LAST_DAY (
               to_date( '01/' || '07/' || to_char( sysdate ,'YYYY' ) ,'dd/mm/yyyy' )
          ) last__day
  FROM
          dual;

MONTHS_BETWEEN

MONTHS_BETWEEN函数返回两个日期之间的月份数。

MONTHS_BETWEEN是Oracle系统函数,DWS并不隐式支持该函数。要支持此函数,Migration Tool需在MIG_ORA_EXT模式中创建一个MONTHS_BETWEEN函数。迁移后的语句将使用此新函数MIG_ORA_EXT.MONTHS_BETWEEN,如下所示。

说明:

在使用此功能之前,请执行如下操作:

  1. 创建并使用MIG_ORA_EXT模式。
  2. 拷贝custom scripts文件中的内容,并在要执行迁移的所有目标数据库中执行此脚本。详情请参见自定义数据库配置迁移流程

输入:MONTHS_BETWEEN

Select Months_Between(to_date('2017-06-20', 'YYYY-MM-DD'), to_date('2011-06-20', 'YYYY-MM-DD')) from dual;

输出

Select MIG_ORA_EXT.MONTHS_BETWEEN(to_date('2017-06-20', 'YYYY-MM-DD'), to_date('2011-06-20', 'YYYY-MM-DD')) from dual;

SYSTIMESTAMP

SYSTIMESTAMP返回数据库所在系统的系统日期,包括精确到小数的秒和时区。返回类型为TIMESTAMP WITH TIME ZONE。

图1 输入:SYSTIMESTAMP
图2 输出:SYSTIMESTAMP
分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

跳转到云社区