Funkcja date_diff

Dotyczy:zaznacz pole wyboru oznaczone jako tak Databricks SQL zaznacz pole wyboru oznaczone jako tak Databricks Runtime 13.3 LTS i nowsze

Zwraca różnicę między dwoma datami w dniach lub między dwoma znacznikami czasu w określonej jednostce.

Składnia

date_diff(endDate, startDate)

date_diff(unit, start, end)

unit
 { MICROSECOND |
   MILLISECOND |
   SECOND |
   MINUTE |
   HOUR |
   DAY |
   WEEK |
   MONTH |
   QUARTER |
   YEAR }

Argumenty

  • endDate: wyrażenie końcowe DATE .
  • startDate: wyrażenie początkowe DATE .
  • unit: jednostka miary.
  • start: wyrażenie początkowe TIMESTAMP .
  • end: wyrażenie końcowe TIMESTAMP .

Zwraca

  • Dla date_diff(endDate, startDate), , , INTEGER które oznacza liczbę dni od startDate do .endDate
  • Dla date_diff(unit, start, end), a , BIGINT która reprezentuje różnicę między start a end mierzoną w units. Ta forma jest synonimem timestampdiff funkcji.

Wynik jest ujemny, jeśli wartość początkowa jest większa niż wartość końcowa.

Funkcja zlicza całe upłynął jednostki na UTC podstawie wartości DAY 86400 sekund.

Jeden miesiąc jest uznawany za upłynął, gdy miesiąc kalendarzowy wzrósł, a dzień kalendarzowy i godzina są równe lub większe od początku. Tygodnie, kwartały i lata następują z tego.

Przykłady

> SELECT date_diff(DATE'2009-07-31', DATE'2009-07-30');
 1

-- One second shy of a month elapsed
> SELECT date_diff(MONTH, TIMESTAMP'2021-02-28 12:00:00', TIMESTAMP'2021-03-28 11:59:59');
 0

-- One month has passed even though its' not end of the month yet because day and time line up.
> SELECT date_diff(MONTH, TIMESTAMP'2021-02-28 12:00:00', TIMESTAMP'2021-03-28 12:00:00');
 1

-- Start is greater than the end
> SELECT date_diff(YEAR, DATE'2021-01-01', DATE'1900-03-28');
 -120