Oracle - Лучший оператор SELECT для получения различия в минутах между двумя столбцами DateTime?

Как прокомментировано a_horse_with_no_name , то, что вы видите в pgadmin, это обычные блокировки, а не взаимоблокировки .

Из документации Postgres :

PostgreSQL предоставляет различные режимы блокировки для управления одновременным доступом к данным в таблицах. Эти режимы могут использоваться для управляемой приложением блокировки в ситуациях, когда MVCC не дает желаемого поведения. Кроме того, большинство команд PostgreSQL автоматически получают блокировки соответствующих режимов, чтобы гарантировать, что ссылочные таблицы не будут удалены или изменены несовместимыми способами во время выполнения команды.

blockquote>

Экран в pgadmin, вероятно, основан на представлении системы pg_lock .

Блокировки происходят в обычном процессе любой базы данных. Вы не хотите регулярно прерывать сеансы, которые генерируют блокировки, потому что это может по-разному повлиять на ваше приложение и базу данных. Вместо этого вы, вероятно, хотите идентифицировать (возможно, используя представление pg_lock), проанализировать и оптимизировать запросы, вызывающие проблемы.


Когда дело доходит до концепции тупика : это особая ненормальная ситуация, которая может возникнуть при использовании блокировки, когда два сеанса взаимно ожидают другого. Они обычно указывают на проблемы в логике приложения.

Большинство СУБД автоматически идентифицируют и разрешают такую ​​ситуацию блокировки, и Postgres не является исключением :

PostgreSQL автоматически обнаруживает тупиковые ситуации и разрешает их, прерывая одну из транзакции, позволяющие другим (их) завершить. (Точно, какая транзакция будет прервана, трудно предсказать, и на нее не следует полагаться.)

blockquote>

20
задан Cade Roux 15 October 2008 в 20:15
поделиться

3 ответа

SELECT date1 - date2
  FROM some_table

возвраты различие в днях. Умножьтесь на 24, чтобы заставить различие в часах и 24*60 получать минуты. Так

SELECT (date1 - date2) * 24 * 60 difference_in_minutes
  FROM some_table

должен быть тем, что Вы ищете

47
ответ дан 29 November 2019 в 22:54
поделиться

По умолчанию вычитание даты оракула возвращает результат в # дней.

Поэтому просто умножаются на 24 для получения # часов, и снова 60 для # минут.

Пример:

select
  round((second_date - first_date) * (60 * 24),2) as time_in_minutes
from
  (
  select
    to_date('01/01/2008 01:30:00 PM','mm/dd/yyyy hh:mi:ss am') as first_date
   ,to_date('01/06/2008 01:35:00 PM','mm/dd/yyyy HH:MI:SS AM') as second_date
  from
    dual
  ) test_data
10
ответ дан 29 November 2019 в 22:54
поделиться
3
ответ дан 29 November 2019 в 22:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: