Тази функция не съществува в Oracle RDMBS; ясно го направи в Oracle Lite (което никога не съм срещал) и вярвам, че е в други бази данни като MySQL.
Има документация, обхващаща аритметика за дата, час и интервал което ще ви отведе част от пътя дотам; можете или да извадите едно времево клеймо от друго; или една дата от друга, или комбинация от двете - но е по-лесно да се придържате към един тип данни. В зависимост от това кой използвате, ще получите или интервал, или число, представляващо броя на дните:
SQL> SELECT CURRENT_TIMESTAMP - TIMESTAMP '1998-12-09 00:00:00' FROM DUAL;
CURRENT_TIMESTAMP-TIMESTAMP'1998-12-0900:00:00'
---------------------------------------------------------------------------
+000006169 16:16:21.287166000
SQL> SELECT CURRENT_DATE - DATE '1998-12-09' FROM DUAL;
CURRENT_DATE-DATE'1998-12-09'
-----------------------------
6169.67775
Ако искате само броя цели дни, можете да използвате extract()
за интервала, за да получите само елемента, който искате, или trunc()
за числото за премахване на дробната част:
SQL> SELECT EXTRACT(DAY FROM CURRENT_TIMESTAMP - TIMESTAMP '1998-12-09 00:00:00') FROM DUAL;
EXTRACT(DAYFROMCURRENT_TIMESTAMP-TIMESTAMP'1998-12-0900:00:00')
---------------------------------------------------------------
6169
SQL> SELECT TRUNC(CURRENT_DATE - DATE '1998-12-09') FROM DUAL;
TRUNC(CURRENT_DATE-DATE'1998-12-09')
------------------------------------
6169
Можете също да trunc()
текущата дата преди сравнение, ако предпочитате, така че сравнявате и двете в полунощ, което означава, че няма да има дробна част от деня за премахване:
SQL> SELECT TRUNC(CURRENT_DATE) - DATE '1998-12-09' FROM DUAL;
TRUNC(CURRENT_DATE)-DATE'1998-12-09'
------------------------------------
6169
Използвал съм литерали за дата на ANSI за фиксираната дата, но можете да използвате съществуваща променлива или колона за дата или времево клеймо; или to_date()
или to_timestamp()
ако имате низ в различен формат.
Можете също да използвате extract()
за преобразуване на компоненти на интервал в комбинирана стойност, както е показано тук
; и също така се уверете, че сте наясно с разликата между current_date
и sysdate
и еквивалентите на клеймото за време
.