Функция вычислительный интервал между датами двух рядов

У меня есть блок plpgsql:

EXTRACT(day FROM TIMESTAMP (
         Select evt_start_date
         From events
         Where evt_id = oldEvtId)
      - (Select evt_start_date
         From events
         Where evt_id = newEvtId)
     ) INTO evtStartDateDiff;

Как я могу найти различие в дате в днях от вопроса, выше которого берет startDate и endDate в качестве параметра от стола.

0
nl ja de
Пожалуйста, don' t изменяют вопрос так, чтобы он вышел бы из синхронизации с данным ответом.
добавлено автор Erwin Brandstetter, источник

1 ответы

Мог быть похожим на это ( функция SQL ):

CREATE OR REPLACE FUNCTION f_days_between(
   old_evt_id int, 
  ,new_evt_id int, 
  ,OUT days_diff int) AS
$func$
SELECT EXTRACT(day FROM evt_start_date
                     - (SELECT e.evt_start_date
                        FROM   events e
                        WHERE  e.evt_id = $2)
              )::int
FROM   events
WHERE  evt_id = $1;
$func$ LANGUAGE sql;

Я упростил его и поместил его в простую функцию SQL. Могла быть функция plpgsql также:

CREATE OR REPLACE FUNCTION f_days_between(
   old_evt_id int, 
  ,new_evt_id int, 
  ,OUT days_diff int) AS
$func$
BEGIN
SELECT INTO days_diff
       EXTRACT(day FROM evt_start_date
                     - (SELECT e.evt_start_date
                        FROM   events e
                        WHERE  e.evt_id = old_evt_id)
              )::int
FROM   events
WHERE  evt_id = new_evt_id;
END
$func$ LANGUAGE plpgsql;
  • Для этого простого случая вкладывает один подвопрос в другом вопросе.

  • Использование параметр в обоих случаях, чтобы упростить синтаксис. Освобождает потребность в ПРИБЫЛЬ пункт здесь. Больше о CREATE FUNCTION in the manual.

  • извлечение () в общем прибыль двойная точность , целое число кажется более подходящим для числа дней, таким образом бросок к целому числу (:: интервал ) и целое число использования для параметр.

1
добавлено
pgsql – PostgreSQL
pgsql – PostgreSQL
2 429 участник(ов)

Чат про PostgreSQL

DBA - русскоговорящее сообщество
DBA - русскоговорящее сообщество
1 345 участник(ов)

Общаемся и обсуждаем темы, посвященные DBA, PostgreSQL, Redis, MongoDB, MySQL, neo4j, riak и т.д. См. также: @devops_ru, @kubernetes_ru, @docker_ru, @nodejs_ru Рекомендуем сразу отключить уведомления, чтобы пребывание здесь было полезным и комфортным.

SqlCom.ru - Стиль жизни SQL
SqlCom.ru - Стиль жизни SQL
908 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только MS SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz). Предложения в @sql_ninja

SQL_Ninja
SQL_Ninja
340 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz)