【问题标题】:PL/SQL How to get X day ago from a Date as Date?PL/SQL 如何从日期中获取 X 天前的日期?
【发布时间】:2012-11-10 15:11:22
【问题描述】:

我想从 08-APR-13 开始 100 天前作为日期。

pl/sql怎么做?

【问题讨论】:

    标签: sql oracle plsql oracle11g oracle-sqldeveloper


    【解决方案1】:

    假设08-APR-13 在您的情况下是一个字符串。所以你需要使用to_date函数将它转换为date,然后简单地减去100字面值。

    • SQL

      SQL> select (to_date('08-APR-13', 'DD-MON-RR') - 100) res
        2    from dual
        3  /
      
      RES
      -----------
      29-12-2012
      
    • PL/SQL

      SQL> declare
        2    l_res_date date;
        3    l_in_date  varchar2(11) := '08-APR-13';
        4  begin
        5    select (to_date(l_in_date, 'DD-MON-RR') - 100)
        6      into l_res_date
        7    from dual;
        8  
        9    dbms_output.put_line(to_char(l_res_date, 'dd-mon-yy'));
        10  end;
        11  /
      
        29-dec-12
      
        PL/SQL procedure successfully completed
      

         SQL> declare
           2    l_res_date date;
           3    l_in_date  varchar2(11) := '08-APR-13';
           4  begin
           5  
           6    l_res_date := to_date(l_in_date, 'DD-MON-RR') - 100;
           7  
           8    dbms_output.put_line(to_char(l_res_date, 'dd-mon-yy'));
           9  end;
           10  /
    
           29-dec-12
    
           PL/SQL procedure successfully completed
    

    【讨论】:

      【解决方案2】:

      正如尼古拉斯克拉斯诺夫所说,这可以通过减去选择查询来完成。 在 pl/sql 中创建一个函数 DATE_AGO,其输入参数是日期和需要减去的天数...

          create or replace function DATE_AGO(DATE1  date, NUMBER_DAYS number)  return date
          is
            V_DATE1 date:=DATE1;
            v_NUMBER_DAYS number:=NUMBER_DAYS;
          begin
            V_DATE1:=V_DATE1-v_NUMBER_DAYS;
            return V_DATE1;
          when OTHERS then
            DBMS_OUTPUT.PUT_LINE(SQLCODE);
          end DATE_AGO;
          /
          SHOW ERRORS;
      
      
      select DATE_AGO('08-APR-13',100) from DUAL;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-10-30
        • 2021-12-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-13
        • 2019-10-08
        • 1970-01-01
        • 2018-03-21
        相关资源
        最近更新 更多