SQL-функция. Дата возврата + несколько дней

Я очень новичок в кодировании разработчиков SQL, и я действительно не знаю, как должен быть написан весь код, и мне нужна помощь. Мне нужно сделать простую функцию для возврата даты возврата, которая должна закончиться так:

SQL> SELECT get_returndate(7)
     FROM dual;
_________
GET_RETURNDATE(7)
----------------------------
2013-10-21:23:59
___

Предполагается, что он принимает 1 параметр, а затем возвращает sysdate + parameter в качестве даты.

Это то, что я получил

create or replace
  function get_retdate(
    p_days number)
  return date
  as
    v_retdate date;
    v_currdate date := sysdate;
  begin
    select v_date + p_days
    into v_retdate
    return
    from dual;
  end;

Моя проблема в том, что я не знаю, как добавить параметр в локальную переменную в функции, так как я очень новичок в SQL и функциях, поэтому я никуда не попал... Бьюсь об заклад, это очень просто, и я просто плохо с SQL.


person user2064844    schedule 16.10.2013    source источник
comment
Поскольку вы используете Oracle, вы просто набираете: SELECT SYSDATE + 7 FROM DUAL;. Вы можете обернуть это в функцию, но я не понимаю, зачем вам это.   -  person Kittoes0124    schedule 17.10.2013


Ответы (3)


Я приветствую вашу попытку новичка в программировании Oracle, и вы были близки к этому. Но надо заглянуть в мануал.

Вот как вы должны были пойти:

 create or replace function get_retdate( p_days number)
 return date
 as
   v_retdate date;
   v_currdate date := sysdate;
 begin
   select v_currdate + p_days into v_retdate from dual;
   return v_retdate;
 end get_retdate;
 /
person J. Chomel    schedule 25.08.2016

Если вы используете MS SQL, используйте DATEADD: http://www.w3schools.com/sql/func_dateadd.asp

Пример:

DECLARE SevenDaysFromNow DATETIME = DATEADD(d,7,GETDATE())
person mayabelle    schedule 16.10.2013

Transact-SQL (SQL Server) предлагает очень простое решение, не требующее хранимой процедуры:

SELECT GETDATE() + 7;

Дает в моем часовом поясе:

2013-10-24 00:29:54.137
person jacouh    schedule 16.10.2013