Как был сказан, они - то же. Существуют два, потому что bool является ключевым словом C# и булевской переменной.Net класс.
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;
Удачи!
Я не могу вспомнить, что использовал СУБД, которая не поддерживала DATE1-DATE2 и SQL 92 , похоже, согласен.
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 поддерживается на:
Я считаю, что стандарт SQL-92 поддерживает вычитание двух дат с помощью оператора '-'.