Date Functions in SQL
Date Functions in SQL
Date Functions in SQL
ent Date
ECT TO_CHAR(SYSDATE, 'DD-MON-YYYY HH:MI:SS') FROM dual; Day Month Year Fill Mode Julian Date D MM YY FM J DD MON YYYY
mats
DDTH RR
DAY RRRR
ND + -
D_MONTHS
A Month To A Date
RRENT_DATE
rns the current date in the session time zone, in a value in the Gregorian calendar of datatype DATE
MP
rns a VARCHAR2 value containing the datatype code, length in bytes, and internal representation of a value
P(<value> [,<return_format>[,<start_position>[,<length>]]])
8 10
mal
16 17 1008 notation with the character set name 1010 1016 1017
decimal
le Characters
EATEST
ST(<date>, <date>, <date>, ...) ATE TABLE t ( ecol1 DATE, ecol2 DATE, ecol3 DATE) FREE 0;
ERT INTO t VALUES (SYSDATE+23, SYSDATE-10, SYSDATE-24); ERT INTO t VALUES (SYSDATE-15, SYSDATE, SYSDATE+15); ERT INTO t VALUES (SYSDATE-7, SYSDATE-18, SYSDATE-9); MIT;
ECT * FROM t;
ERVAL
ST_DAY
AST
NGTH
NGTHB
e: Additional forms of LENGTH (LENGTHC, LENGTH2, and LENGTH4) are also available.
NTHS_BETWEEN
W_TIME
rns the date and time in time zone zone2 when date and time in time zone zone1 are date
ore using this function, you must set the NLS_DATE_FORMAT parameter to display 24-hour
e. ECT NEW_TIME(TO_DATE('11-10-99 01:23:45', -DD-YY HH24:MI:SS'), 'AST', 'PST') "New Date and Time" M dual;
ECT NEW_TIME(TO_DATE('11-10-99 01:23:45', -DD-YY HH24:MI:SS'), 'AST', 'PST') "New Date and Time" M dual;
XT_DAY
ions are SUN, MON, TUE, WED, THU, FRI, and SAT ECT NEXT_DAY(SYSDATE, 'FRI') FROM dual;
UND
rns date rounded to the unit specified by the format model. If you omit the format, the date is rounded to the nearest day
led Demo
DDSP HH24SP MISP MMSP SSSP ECT TO_CHAR(TO_DATE('10:30:18', 'HH24:MI:SS'), 'HH24SP:MISP:SSSP') M dual;
SDATE
rns the current date and time set for the operating system on which the database resides
UNC
MIT;
first day of the month ECT TO_CHAR(TRUNC(SYSDATE, 'MM'), 'DD-MON-YYYY HH:MI:SS') M dual;
first day of the year ECT TO_CHAR(TRUNC(SYSDATE, 'YYYY'), 'DD-MON-YYYY HH:MI:SS') M dual;
ECT * FROM t;
ECT * FROM t;
ECT * FROM t;
ECT * FROM t;
ZE
e Calculations
ATE OR REPLACE FUNCTION business_date (start_date DATE, s2Add NUMBER) RETURN DATE IS
unter NATURAL := 0; rDate DATE := start_date; yNum POSITIVE; ipCntr NATURAL := 0; IN HILE Counter < Days2Add LOOP CurDate := CurDate+1; DayNum := TO_CHAR(CurDate, 'D');
IF DayNum BETWEEN 2 AND 6 THEN Counter := Counter + 1; ELSE SkipCntr := SkipCntr + 1; END IF; ND LOOP; ETURN start_date + Counter + SkipCntr; business_date;
ness Date function, above, enhanced by Larry Benton to handle negative values for the days2add parameter.
ATE OR REPLACE FUNCTION business_date (start_date DATE, s2add NUMBER) RETURN DATE IS unter NATURAL := 0; rDate DATE := start_date; yNum POSITIVE; ipCntr NATURAL := 0; rection INTEGER := 1; -- days after start_date sinessDays NUMBER := Days2Add; IN F Days2Add < 0 THEN Direction := - 1; -- days before start_date BusinessDays := (-1) * BusinessDays; ND IF;
HILE Counter < BusinessDays LOOP CurDate := CurDate + Direction; DayNum := TO_CHAR( CurDate, 'D');
IF DayNum BETWEEN 2 AND 6 THEN Counter := Counter + 1; ELSE SkipCntr := SkipCntr + 1; END IF; ND LOOP;
URN DATE IS o VARCHAR2(2); r VARCHAR2(4); IN Mo := TO_CHAR(value_in, 'MM'); Yr := TO_CHAR(value_in, 'YYYY'); ETURN TO_DATE(vMo || '-01-' || vYr, 'MM-DD-YYYY'); EPTION HEN OTHERS THEN RETURN TO_DATE('01-01-1900', 'MM-DD-YYYY'); fday_ofmonth;
e Calculations
ATE OR REPLACE FUNCTION time_diff ( E_1 IN DATE, DATE_2 IN DATE) RETURN NUMBER IS NUMBER; NUMBER; NUMBER(5,0); NUMBER(5,0);
IN - Get Julian date number from first date (DATE_1) DATE_1 := TO_NUMBER(TO_CHAR(DATE_1, 'J'));
- Get Julian date number from second date (DATE_2) DATE_2 := TO_NUMBER(TO_CHAR(DATE_2, 'J'));
- Get seconds since midnight from first date (DATE_1) SECOND_1 := TO_NUMBER(TO_CHAR(DATE_1, 'SSSSS'));
- Get seconds since midnight from second date (DATE_2) SECOND_2 := TO_NUMBER(TO_CHAR(DATE_2, 'SSSSS'));
ECT DECODE(FLOOR(999999/86400), 0, '', FLOOR(999999/86400) || ' day(s), ') || TO_CHAR(TO_DATE(MOD(999999, 86400),'SSSSS'), 'HH24:MI:SS') AS elapsed M dual;
ed by Michele Cadot
9/08 to c.d.o.misc
H data AS ( ELECT TRUNC(SYSDATE)+dbms_random.value(0,86400)/86400 h ROM dual ONNECT BY LEVEL <= 10) ECT TO_CHAR(h,'DD/MM/YYYY HH24:MI:SS') h, TO_CHAR(TRUNC(h) TRUNC(TO_CHAR(h,'SSSSS')/600)/144, 'DD/MM/YYYY HH24:MI:SS') "10m" M data ER BY h;