Количество дней между двумя датами - ANSI SQL

Как был сказан, они - то же. Существуют два, потому что bool является ключевым словом C# и булевской переменной.Net класс.

5
задан APC 11 November 2012 в 10:14
поделиться

4 ответа

ANSI SQL-92 определяет DATE - DATE как возвращающий тип INTERVAL. Предполагается, что вы можете извлекать скаляры из ИНТЕРВАЛОВ, используя тот же метод, что и извлечение их из ДАТ, используя - что вполне уместно - функцию EXTRACT (4.5.3).

работает с дата, время или интервал и возвращает точное числовое значение, представляющее значение одного компонента даты и времени или интервал.

Однако это очень плохо реализовано в большинстве баз данных. Вы, вероятно, застряли в использовании чего-то специфичного для базы данных. DATEDIFF довольно хорошо реализован на разных платформах.

Вот «настоящий» способ сделать это.

SELECT EXTRACT(DAY FROM DATE '2009-01-01' - DATE '2009-05-05') FROM DUAL;

Удачи!

6
ответ дан 13 December 2019 в 22:09
поделиться

Я не могу вспомнить, что использовал СУБД, которая не поддерживала DATE1-DATE2 и SQL 92 , похоже, согласен.

3
ответ дан 13 December 2019 в 22:09
поделиться

SQL 92 поддерживает следующий синтаксис:

t.date_1 - t.date_2

Функция EXTRACT также является ANSI, но не поддерживается в SQL Server. Пример:

ABS(EXTRACT(DAY FROM t.date_1) - EXTRACT(DAY FROM t.date_2)

Заключение вычисления в функцию абсолютного значения гарантирует, что значение будет положительным, даже если меньшая дата является первой датой.

EXTRACT поддерживается на:

  • Oracle 9i +
  • MySQL
  • Postgres
0
ответ дан 13 December 2019 в 22:09
поделиться

Я считаю, что стандарт SQL-92 поддерживает вычитание двух дат с помощью оператора '-'.

1
ответ дан 13 December 2019 в 22:09
поделиться
Другие вопросы по тегам:

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