Oracle Dates, Timestamps and Intervals
An overview of the usage of dates, timestamps and intervals in Oracle databases.
oracle miscconfigurationintermediate
by OracleDba
28 views
An overview of the usage of dates, timestamps and intervals in Oracle databases.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607
CREATE TABLE t1 (
col1 DATE,
col2 DATE
);
INSERT INTO t1 VALUES (TRUNC(SYSDATE), SYSDATE);
COMMIT;
SELECT * FROM t1;
COL1 COL2
--------- ---------
27-APR-13 27-APR-13
1 row selected.
SQL>
SELECT COUNT(*)
FROM t1
WHERE col1 = col2;
COUNT(*)
----------
0
1 row selected.
SQL>
SELECT TO_CHAR(col1, 'DD-MON-YYYY HH24:MI:SS') AS col1,
TO_CHAR(col2, 'DD-MON-YYYY HH24:MI:SS') AS col2
FROM t1;
COL1 COL2
-------------------- --------------------
27-APR-2013 00:00:00 27-APR-2013 11:20:00
1 row selected.
SQL>
ALTER SESSION SET nls_date_format='DD-MON-YYYY HH24:MI:SS';
SELECT * FROM t1;
COL1 COL2
-------------------- --------------------
27-APR-2013 00:00:00 27-APR-2013 11:20:00
1 row selected.
SQL>
SELECT COUNT(*)
FROM t1
WHERE TRUNC(col1) = '27/04/2013';
*
ERROR at line 3:ISO
ORA-01843: not a valid month
SQL>
-- Explicit using TO_DATE
SELECT COUNT(*)
FROM t1
WHERE TRUNC(col1) = TO_DATE('27/04/2013','DD/MM/YYYY');
COUNT(*)
----------
1
SQL>
-- Implicit using NLS_DATE_FORMAT
ALTER SESSION SET nls_date_format='DD/MM/YYYY';
SELECT COUNT(*)
FROM t1
WHERE TRUNC(col1) = '27/04/2013';
COUNT(*)
----------
1
SQL>
-- Explicit using ANSI DATE literal
SELECT COUNT(*)
FROM t1
WHERE TRUNC(col1) = DATE '2013-04-27';
COUNT(*)
----------
1
SQL>
ALTER SESSION SET nls_date_format = 'DD-MON-YYYY HH24:MI:SS';
DROP TABLE date_test;
CREATE TABLE date_test AS
SELECT SYSDATE AS now
FROM dual;
SELECT now,
dump(now)
FROM date_test;
NOW DUMP(NOW)
-------------------- -----------------------------------------
10-JUL-2004 17:21:30 Typ=12 Len=7: 120,104,7,10,18,22,31
1 row selected.
ALTER SESSION SET nls_date_format='DD/MM/YYYY HH24:MI:SS';
SELECT SYSDATE AS current_date,
SYSDATE + 1 AS plus_1_day,
SYSDATE + 2/24 AS plus_2_hours,
SYSDATE + 10/24/60 AS plus_10_minutes,
SYSDATE + 30/24/60/60 AS plus_30_seconds
FROM dual;
CURRENT_DATE PLUS_1_DAY PLUS_2_HOURS PLUS_10_MINUTES PLUS_30_SECONDS
------------------- ------------------- ------------------- ------------------- -------------------
10/07/2004 17:57:30 11/07/2004 17:57:30 10/07/2004 19:57:30 10/07/2004 18:07:30 10/07/2004 17:58:00
1 row selected.
ALTER SESSION SET nls_date_format='DD-MON-YYYY HH24:MI:SS';
SELECT SYSDATE
FROM dual;
SYSDATE
-------------------
10/07/2004 18:34:12
1 row selected.
SELECT CURRENT_DATE
FROM dual;
CURRENT_DATE
-------------------
10/07/2004 18:36:24
1 row selected.
SELECT SYSDATE,
ADD_MONTHS(SYSDATE, 2)
FROM dual;
SYSDATE ADD_MONTHS(SYSDATE,
------------------- -------------------
10/07/2004 18:40:46 10/09/2004 18:40:46
1 row selected.
SELECT SYSDATE,
LAST_DAY(SYSDATE)
FROM dual;
SYSDATE LAST_DAY(SYSDATE)
------------------- -------------------
10/07/2004 18:42:14 31/07/2004 18:42:14
1 row selected.
SELECT MONTHS_BETWEEN(SYSDATE, SYSDATE+30)
FROM dual;
MONTHS_BETWEEN(SYSDATE,SYSDATE+30)
----------------------------------
-1
1 row selected.
SELECT SYSDATE,
NEXT_DAY(SYSDATE, 'MONDAY')
FROM dual;
SYSDATE NEXT_DAY(SYSDATE,'M
------------------- -------------------
10/07/2004 18:43:44 12/07/2004 18:43:44
1 row selected.
SELECT SYSDATE,
NEW_TIME(SYSDATE, 'GMT', 'EST')
FROM dual;
SYSDATE NEW_TIME(SYSDATE,'G
------------------- -------------------
10/07/2004 18:46:12 10/07/2004 13:46:12
1 row selected.
SELECT TO_CHAR(SYSDATE, 'DD/MM/YY HH24:MI')
FROM dual;
TO_CHAR(SYSDAT
--------------
10/07/04 18:48
1 row selected.
SELECT TO_DATE('10/07/2004 13:31:45', 'DD/MM/YYYY HH24:MI:SS')
FROM dual;
TO_DATE('10/07/2004
-------------------
10/07/2004 13:31:45
1 row selected.
SELECT SYSDATE,
ROUND(SYSDATE, 'HH24')
FROM dual;
SYSDATE ROUND(SYSDATE,'HH24
------------------- -------------------
10/07/2004 18:54:24 10/07/2004 19:00:00
1 row selected.
SELECT SYSDATE,
TRUNC(SYSDATE, 'HH24')
FROM dual;
SYSDATE TRUNC(SYSDATE,'HH24
------------------- -------------------
10/07/2004 18:55:44 10/07/2004 18:00:00
1 row selected.
SELECT SYSDATE,
TRUNC(SYSDATE, 'CC'),
ROUND(SYSDATE, 'CC')
FROM dual;
SYSDATE TRUNC(SYSDATE,'CC') ROUND(SYSDATE,'CC')
-------------------- -------------------- --------------------
16-JAN-1999 08:48:09 01-JAN-1901 00:00:00 01-JAN-2001 00:00:00
1 row selected.
SELECT SYSDATE,
TRUNC(SYSDATE, 'YY'),
ROUND(SYSDATE, 'YY')
FROM dual;
SYSDATE TRUNC(SYSDATE,'YY') ROUND(SYSDATE,'YY')
-------------------- -------------------- --------------------
08-JUL-2004 08:08:49 01-JAN-2004 00:00:00 01-JAN-2005 00:00:00
1 row selected.
SELECT SYSDATE,
TRUNC(SYSDATE, 'IY'),
ROUND(SYSDATE, 'IY')
FROM dual;
SYSDATE TRUNC(SYSDATE,'IY') ROUND(SYSDATE,'IY')
-------------------- -------------------- --------------------
08-JUL-2004 08:10:39 29-DEC-2003 00:00:00 03-JAN-2005 00:00:00
1 row selected.
SELECT SYSDATE,
TRUNC(SYSDATE, 'Q'),
ROUND(SYSDATE, 'Q')
FROM dual;
SYSDATE TRUNC(SYSDATE,'Q') ROUND(SYSDATE,'Q')
-------------------- -------------------- -------------------
22-AUG-2004 08:23:56 01-JUL-2004 00:00:00 01-OCT-2004 00:00:00
1 row selected.
SELECT SYSDATE,
TRUNC(SYSDATE, 'MM'),
ROUND(SYSDATE, 'MM')
FROM dual;
SYSDATE TRUNC(SYSDATE,'MM') ROUND(SYSDATE,'MM')
-------------------- -------------------- --------------------
16-JUL-2004 08:15:31 01-JUL-2004 00:00:00 01-AUG-2004 00:00:00
1 row selected.
SELECT SYSDATE,
TRUNC(SYSDATE, 'WW'),
ROUND(SYSDATE, 'WW')
FROM dual;
SYSDATE TRUNC(SYSDATE,'WW') ROUND(SYSDATE,'WW')
-------------------- -------------------- --------------------
12-JUL-2004 08:20:28 08-JUL-2004 00:00:00 15-JUL-2004 00:00:00
1 row selected.
SELECT SYSDATE,
TRUNC(SYSDATE, 'IW'),
ROUND(SYSDATE, 'IW')
FROM dual;
SYSDATE TRUNC(SYSDATE,'IW') ROUND(SYSDATE,'IW')
-------------------- -------------------- --------------------
16-JUL-2004 08:26:02 12-JUL-2004 00:00:00 19-JUL-2004 00:00:00
1 row selected.
SELECT SYSDATE,
TRUNC(SYSDATE, 'W'),
ROUND(SYSDATE, 'W')
FROM dual;
SYSDATE TRUNC(SYSDATE,'W') ROUND(SYSDATE,'W')
-------------------- -------------------- --------------------
13-JUL-2004 08:28:10 08-JUL-2004 00:00:00 15-JUL-2004 00:00:00
1 row selected.
SELECT SYSDATE,
TRUNC(SYSDATE, 'DD'),
ROUND(SYSDATE, 'DD')
FROM dual;
SYSDATE TRUNC(SYSDATE,'DD') ROUND(SYSDATE,'DD')
-------------------- -------------------- --------------------
08-JUL-2004 20:34:24 08-JUL-2004 00:00:00 09-JUL-2004 00:00:00
1 row selected.
SELECT SYSDATE,
TRUNC(SYSDATE, 'D'),
ROUND(SYSDATE, 'D')
FROM dual;
SYSDATE TRUNC(SYSDATE,'D') ROUND(SYSDATE,'D')
-------------------- -------------------- --------------------
09-JUL-2004 08:33:01 04-JUL-2004 00:00:00 11-JUL-2004 00:00:00
1 row selected.
SELECT SYSDATE,
TRUNC(SYSDATE, 'HH'),
ROUND(SYSDATE, 'HH')
FROM dual;
SYSDATE TRUNC(SYSDATE,'HH') ROUND(SYSDATE,'HH')
-------------------- -------------------- --------------------
08-JUL-2004 08:36:22 08-JUL-2004 08:00:00 08-JUL-2004 09:00:00
1 row selected.
SELECT SYSDATE,
TRUNC(SYSD'MI'),
ROUND(SYSDAT
'MI')
FROM dual;
SYSDATE TRUNC(SYSDATE,'HH') ROUND(SYSDATE,'HH')
-------------------- -------------------- --------------------
08-JUL-2004 08:37:32 08-JUL-2004 08:37:00 08-JUL-2004 08:38:00
1 row selected.
ALTER SESSION SET nls_timestamp_tz_format = 'DD-MON-YYYY HH24:MI:SS.FF TZH:TZM';
DROP TABLE timestamp_test;
CREATE TABLE timestamp_test AS
SELECT SYSTIMESTAMP AS now
FROM dual;
SELECT now,
DUMP(now)
FROM timestamp_test;
NOW DUMP(NOW)
-------------------------------------------------------- --------------------------------------------------------
31-JUL-04 11.15.05.662509 +01:00 Typ=181 Len=13: 120,104,7,31,11,16,6,39,125,21,200,21,60
1 row selected.
SELECT SYSTIMESTAMP(3)
FROM dual;
SYSTIMESTAMP(3)
-----------------------------
10-JUL-04 19.09.35.793 +01:00
1 row selected.
SELECT CURRENT_TIMESTAMP(3)
FROM dual;
CURRENT_TIMESTAMP(3)
-----------------------------
10-JUL-04 19.11.12.686 +01:00
1 row selected.
SELECT LOCALTIMESTAMP(3)
FROM dual;
LOCALTIMESTAMP(3)
----------------------
10-JUL-04 19.12.21.859
1 row selected.
SELECT TO_TIMESTAMP('10/07/2004', 'DD/MM/YYYY')
FROM dual;
TO_TIMESTAMP('10/07/2004','DD/MM/YYYY')
---------------------------------------
10-JUL-04 00.00.00.000000000
1 row selected.
SELECT TO_TIMESTAMP_TZ('10/07/2004', 'DD/MM/YYYY')
FROM dual;
TO_TIMESTAMP_TZ('10/07/2004','DD/MM/YYYY')
------------------------------------------
10-JUL-04 00.00.00.000000000 +01:00
1 row selected.
SELECT FROM_TZ(LOCALTIMESTAMP, '3:00')
FROM dual;
FROM_TZ(LOCALTIMESTAMP,'3:00')
--------------------------------
10-JUL-04 19.19.07.385684 +03:00
1 row selected.
SELECT DBTIMEZONE
FROM dual;
DBTIME
------
+00:00
1 row selected.
SELECT SESSIONTIMEZONE
FROM ual;
SESSIONTIMEZONE
---------------
+01:00
1 row selected.
SELECT SYS_EXTRACT_UTC(SYSTIMESTAMP)
FROM dual;
SYS_EXTRACT_UTC(SYSTIMESTAMP)
-----------------------------
10-JUL-04 18.23.09.393478
1 row selected.
SELECT EXTRACT(HOUR FROM SYSTIMESTAMP)
FROM dual;
EXTRACT(HOURFROMSYSTIMESTAMP)
-----------------------------
18
1 row selected.
SELECT CAST(SYSTIMESTAMP AS DATE) ts_to_date
FROM dual;
TS_TO_DAT
---------
08-SEP-13
SQL>
SELECT CAST(SYSDATE AS TIMESTAMP) date_to_ts
FROM dual;
DATE_TO_TS
---------------------------------------------------------------------------
08-SEP-13 09.21.45.000000 AM
SQL>
INTERVAL YEAR [(year_precision)] TO MONTH
INTERVAL DAY [(day_precision)] TO SECOND [(fractional_seconds_precision)]
CREATE TABLE test_interval_table (
id NUMBER(10),
time_period_1 INTERVAL YEAR TO MONTH,
time_period_2 INTERVAL DAY TO SECOND,
time_period_3 INTERVAL YEAR (3) TO MONTH,
time_period_4 INTERVAL DAY (4) TO SECOND (9)
);
SQL> DESC test_interval_table
Name Null? Type
-------------------------------- -------- ------------------------------------
ID NUMBER(10)
TIME_PERIOD_1 INTERVAL YEAR(2) TO MONTH
TIME_PERIOD_2 INTERVAL DAY(2) TO SECOND(6)
TIME_PERIOD_3 INTERVAL YEAR(3) TO MONTH
TIME_PERIOD_4 INTERVAL DAY(4) TO SECOND(9)
SELECT INTERVAL '20' MONTH
FROM dual;
INTERVAL'20'MONTH
---------------------------------------------------------------------------
+01-08
1 row selected.
SELECT INTERVAL '1' YEAR – INTERVAL '1' MONTH
FROM dual;
INTERVAL'1'YEAR-INTERVAL'1'MONTH
---------------------------------------------------------------------------
+000000000-11
1 row selected.
SELECT INTERVAL '2 3:04:11.333' DAY TO SECOND
FROM dual;
INTERVAL'23:04:11.333'DAYTOSECOND
---------------------------------------------------------------------------
+02 03:04:11.333000
1 row selected.
SELECT INTERVAL '1' DAY – INTERVAL '1' SECOND
FROM dual;
INTERVAL'1'DAY-INTERVAL'1'SECOND
---------------------------------------------------------------------------
+000000000 23:59:59.000000000
1 row selected.
SELECT SYSDATE,
SYSDATE + INTERVAL '1' MONTH + INTERVAL '1' DAY – INTERVAL '3' SECOND
FROM dual;
SYSDATE SYSDATE+INTERVAL'1'M
-------------------- --------------------
10-JUL-2004 19:55:53 11-AUG-2004 19:55:50
1 row selected.
SELECT NUMTOYMINTERVAL(2, 'MONTH')
FROM dual;
NUMTOYMINTERVAL(2,'MONTH')
--------------------------
+000000000-02
1 row selected.
SELECT NUMTODSINTERVAL(2, 'HOUR')
FROM dual;
NUMTODSINTERVAL(2,'HOUR')
-----------------------------
+000000000 02:00:00.000000000
1 row selected.
SELECT TO_YMINTERVAL('3-10')
FROM dual;
TO_YMINTERVAL('3-10')
---------------------
+000000003-10
1 row selected.
SELECT TO_DSINTERVAL('2 10:3:45.123')
FROM dual;
TO_DSINTERVAL('210:3:45.123')
-----------------------------
+000000002 10:03:45.123000000
1 row selected.
SELECT EXTRACT(HOUR FROM NUMTODSINTERVAL(2, 'HOUR'))
FROM dual;
EXTRACT(HOURFROMNUMTODSINTERVAL(2,'HOUR'))
------------------------------------------
2
1 row selected.123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272
ALTER SESSION SET nls_date_format = 'DD-MON-YYYY HH24:MI:SS';
DROP TABLE date_test;
CREATE TABLE date_test AS
SELECT SYSDATE AS now
FROM dual;
SELECT now,
dump(now)
FROM date_test;
NOW DUMP(NOW)
-------------------- -----------------------------------------
10-JUL-2004 17:21:30 Typ=12 Len=7: 120,104,7,10,18,22,31
1 row selected.
ALTER SESSION SET nls_date_format='DD/MM/YYYY HH24:MI:SS';
SELECT SYSDATE AS current_date,
SYSDATE + 1 AS plus_1_day,
SYSDATE + 2/24 AS plus_2_hours,
SYSDATE + 10/24/60 AS plus_10_minutes,
SYSDATE + 30/24/60/60 AS plus_30_seconds
FROM dual;
CURRENT_DATE PLUS_1_DAY PLUS_2_HOURS PLUS_10_MINUTES PLUS_30_SECONDS
------------------- ------------------- ------------------- ------------------- -------------------
10/07/2004 17:57:30 11/07/2004 17:57:30 10/07/2004 19:57:30 10/07/2004 18:07:30 10/07/2004 17:58:00
1 row selected.
ALTER SESSION SET nls_date_format='DD-MON-YYYY HH24:MI:SS';
SELECT SYSDATE
FROM dual;
SYSDATE
-------------------
10/07/2004 18:34:12
1 row selected.
SELECT CURRENT_DATE
FROM dual;
CURRENT_DATE
-------------------
10/07/2004 18:36:24
1 row selected.
SELECT SYSDATE,
ADD_MONTHS(SYSDATE, 2)
FROM dual;
SYSDATE ADD_MONTHS(SYSDATE,
------------------- -------------------
10/07/2004 18:40:46 10/09/2004 18:40:46
1 row selected.
SELECT SYSDATE,
LAST_DAY(SYSDATE)
FROM dual;
SYSDATE LAST_DAY(SYSDATE)
------------------- -------------------
10/07/2004 18:42:14 31/07/2004 18:42:14
1 row selected.
SELECT MONTHS_BETWEEN(SYSDATE, SYSDATE+30)
FROM dual;
MONTHS_BETWEEN(SYSDATE,SYSDATE+30)
----------------------------------
-1
1 row selected.
SELECT SYSDATE,
NEXT_DAY(SYSDATE, 'MONDAY')
FROM dual;
SYSDATE NEXT_DAY(SYSDATE,'M
------------------- -------------------
10/07/2004 18:43:44 12/07/2004 18:43:44
1 row selected.
SELECT SYSDATE,
NEW_TIME(SYSDATE, 'GMT', 'EST')
FROM dual;
SYSDATE NEW_TIME(SYSDATE,'G
------------------- -------------------
10/07/2004 18:46:12 10/07/2004 13:46:12
1 row selected.
SELECT TO_CHAR(SYSDATE, 'DD/MM/YY HH24:MI')
FROM dual;
TO_CHAR(SYSDAT
--------------
10/07/04 18:48
1 row selected.
SELECT TO_DATE('10/07/2004 13:31:45', 'DD/MM/YYYY HH24:MI:SS')
FROM dual;
TO_DATE('10/07/2004
-------------------
10/07/2004 13:31:45
1 row selected.
SELECT SYSDATE,
ROUND(SYSDATE, 'HH24')
FROM dual;
SYSDATE ROUND(SYSDATE,'HH24
------------------- -------------------
10/07/2004 18:54:24 10/07/2004 19:00:00
1 row selected.
SELECT SYSDATE,
TRUNC(SYSDATE, 'HH24')
FROM dual;
SYSDATE TRUNC(SYSDATE,'HH24
------------------- -------------------
10/07/2004 18:55:44 10/07/2004 18:00:00
1 row selected.
SELECT SYSDATE,
TRUNC(SYSDATE, 'CC'),
ROUND(SYSDATE, 'CC')
FROM dual;
SYSDATE TRUNC(SYSDATE,'CC') ROUND(SYSDATE,'CC')
-------------------- -------------------- --------------------
16-JAN-1999 08:48:09 01-JAN-1901 00:00:00 01-JAN-2001 00:00:00
1 row selected.
SELECT SYSDATE,
TRUNC(SYSDATE, 'YY'),
ROUND(SYSDATE, 'YY')
FROM dual;
SYSDATE TRUNC(SYSDATE,'YY') ROUND(SYSDATE,'YY')
-------------------- -------------------- --------------------
08-JUL-2004 08:08:49 01-JAN-2004 00:00:00 01-JAN-2005 00:00:00
1 row selected.
SELECT SYSDATE,
TRUNC(SYSDATE, 'IY'),
ROUND(SYSDATE, 'IY')
FROM dual;
SYSDATE TRUNC(SYSDATE,'IY') ROUND(SYSDATE,'IY')
-------------------- -------------------- --------------------
08-JUL-2004 08:10:39 29-DEC-2003 00:00:00 03-JAN-2005 00:00:00
1 row selected.
SELECT SYSDATE,
TRUNC(SYSDATE, 'Q'),
ROUND(SYSDATE, 'Q')
FROM dual;
SYSDATE TRUNC(SYSDATE,'Q') ROUND(SYSDATE,'Q')
-------------------- -------------------- -------------------
22-AUG-2004 08:23:56 01-JUL-2004 00:00:00 01-OCT-2004 00:00:00
1 row selected.
SELECT SYSDATE,
TRUNC(SYSDATE, 'MM'),
ROUND(SYSDATE, 'MM')
FROM dual;
SYSDATE TRUNC(SYSDATE,'MM') ROUND(SYSDATE,'MM')
-------------------- -------------------- --------------------
16-JUL-2004 08:15:31 01-JUL-2004 00:00:00 01-AUG-2004 00:00:00
1 row selected.
SELECT SYSDATE,
TRUNC(SYSDATE, 'WW'),
ROUND(SYSDATE, 'WW')
FROM dual;
SYSDATE TRUNC(SYSDATE,'WW') ROUND(SYSDATE,'WW')
-------------------- -------------------- --------------------
12-JUL-2004 08:20:28 08-JUL-2004 00:00:00 15-JUL-2004 00:00:00
1 row selected.
SELECT SYSDATE,
TRUNC(SYSDATE, 'IW'),
ROUND(SYSDATE, 'IW')
FROM dual;
SYSDATE TRUNC(SYSDATE,'IW') ROUND(SYSDATE,'IW')
-------------------- -------------------- --------------------
16-JUL-2004 08:26:02 12-JUL-2004 00:00:00 19-JUL-2004 00:00:00
1 row selected.
SELECT SYSDATE,
TRUNC(SYSDATE, 'W'),
ROUND(SYSDATE, 'W')
FROM dual;
SYSDATE TRUNC(SYSDATE,'W') ROUND(SYSDATE,'W')
-------------------- -------------------- --------------------
13-JUL-2004 08:28:10 08-JUL-2004 00:00:00 15-JUL-2004 00:00:00
1 row selected.
SELECT SYSDATE,
TRUNC(SYSDATE, 'DD'),
ROUND(SYSDATE, 'DD')
FROM dual;
SYSDATE TRUNC(SYSDATE,'DD') ROUND(SYSDATE,'DD')
-------------------- -------------------- --------------------
08-JUL-2004 20:34:24 08-JUL-2004 00:00:00 09-JUL-2004 00:00:00
1 row selected.
SELECT SYSDATE,
TRUNC(SYSDATE, 'D'),
ROUND(SYSDATE, 'D')
FROM dual;
SYSDATE TRUNC(SYSDATE,'D') ROUND(SYSDATE,'D')
-------------------- -------------------- --------------------
09-JUL-2004 08:33:01 04-JUL-2004 00:00:00 11-JUL-2004 00:00:00
1 row selected.
SELECT SYSDATE,
TRUNC(SYSDATE, 'HH'),
ROUND(SYSDATE, 'HH')
FROM dual;
SYSDATE TRUNC(SYSDATE,'HH') ROUND(SYSDATE,'HH')
-------------------- -------------------- --------------------
08-JUL-2004 08:36:22 08-JUL-2004 08:00:00 08-JUL-2004 09:00:00
1 row selected.
SELECT SYSDATE,
TRUNC(SYSD'MI'),
ROUND(SYSDAT
'MI')
FROM dual;
SYSDATE TRUNC(SYSDATE,'HH') ROUND(SYSDATE,'HH')
-------------------- -------------------- --------------------
08-JUL-2004 08:37:32 08-JUL-2004 08:37:00 08-JUL-2004 08:38:00
1 row selected.123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
ALTER SESSION SET nls_timestamp_tz_format = 'DD-MON-YYYY HH24:MI:SS.FF TZH:TZM';
DROP TABLE timestamp_test;
CREATE TABLE timestamp_test AS
SELECT SYSTIMESTAMP AS now
FROM dual;
SELECT now,
DUMP(now)
FROM timestamp_test;
NOW DUMP(NOW)
-------------------------------------------------------- --------------------------------------------------------
31-JUL-04 11.15.05.662509 +01:00 Typ=181 Len=13: 120,104,7,31,11,16,6,39,125,21,200,21,60
1 row selected.
SELECT SYSTIMESTAMP(3)
FROM dual;
SYSTIMESTAMP(3)
-----------------------------
10-JUL-04 19.09.35.793 +01:00
1 row selected.
SELECT CURRENT_TIMESTAMP(3)
FROM dual;
CURRENT_TIMESTAMP(3)
-----------------------------
10-JUL-04 19.11.12.686 +01:00
1 row selected.
SELECT LOCALTIMESTAMP(3)
FROM dual;
LOCALTIMESTAMP(3)
----------------------
10-JUL-04 19.12.21.859
1 row selected.
SELECT TO_TIMESTAMP('10/07/2004', 'DD/MM/YYYY')
FROM dual;
TO_TIMESTAMP('10/07/2004','DD/MM/YYYY')
---------------------------------------
10-JUL-04 00.00.00.000000000
1 row selected.
SELECT TO_TIMESTAMP_TZ('10/07/2004', 'DD/MM/YYYY')
FROM dual;
TO_TIMESTAMP_TZ('10/07/2004','DD/MM/YYYY')
------------------------------------------
10-JUL-04 00.00.00.000000000 +01:00
1 row selected.
SELECT FROM_TZ(LOCALTIMESTAMP, '3:00')
FROM dual;
FROM_TZ(LOCALTIMESTAMP,'3:00')
--------------------------------
10-JUL-04 19.19.07.385684 +03:00
1 row selected.
SELECT DBTIMEZONE
FROM dual;
DBTIME
------
+00:00
1 row selected.
SELECT SESSIONTIMEZONE
FROM ual;
SESSIONTIMEZONE
---------------
+01:00
1 row selected.
SELECT SYS_EXTRACT_UTC(SYSTIMESTAMP)
FROM dual;
SYS_EXTRACT_UTC(SYSTIMESTAMP)
-----------------------------
10-JUL-04 18.23.09.393478
1 row selected.
SELECT EXTRACT(HOUR FROM SYSTIMESTAMP)
FROM dual;
EXTRACT(HOURFROMSYSTIMESTAMP)
-----------------------------
18
1 row selected.1234567891011121314151617
SELECT CAST(SYSTIMESTAMP AS DATE) ts_to_date
FROM dual;
TS_TO_DAT
---------
08-SEP-13
SQL>
SELECT CAST(SYSDATE AS TIMESTAMP) date_to_ts
FROM dual;
DATE_TO_TS
---------------------------------------------------------------------------
08-SEP-13 09.21.45.000000 AM
SQL>123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
INTERVAL YEAR [(year_precision)] TO MONTH
INTERVAL DAY [(day_precision)] TO SECOND [(fractional_seconds_precision)]
CREATE TABLE test_interval_table (
id NUMBER(10),
time_period_1 INTERVAL YEAR TO MONTH,
time_period_2 INTERVAL DAY TO SECOND,
time_period_3 INTERVAL YEAR (3) TO MONTH,
time_period_4 INTERVAL DAY (4) TO SECOND (9)
);
SQL> DESC test_interval_table
Name Null? Type
-------------------------------- -------- ------------------------------------
ID NUMBER(10)
TIME_PERIOD_1 INTERVAL YEAR(2) TO MONTH
TIME_PERIOD_2 INTERVAL DAY(2) TO SECOND(6)
TIME_PERIOD_3 INTERVAL YEAR(3) TO MONTH
TIME_PERIOD_4 INTERVAL DAY(4) TO SECOND(9)
SELECT INTERVAL '20' MONTH
FROM dual;
INTERVAL'20'MONTH
---------------------------------------------------------------------------
+01-08
1 row selected.
SELECT INTERVAL '1' YEAR – INTERVAL '1' MONTH
FROM dual;
INTERVAL'1'YEAR-INTERVAL'1'MONTH
---------------------------------------------------------------------------
+000000000-11
1 row selected.
SELECT INTERVAL '2 3:04:11.333' DAY TO SECOND
FROM dual;
INTERVAL'23:04:11.333'DAYTOSECOND
---------------------------------------------------------------------------
+02 03:04:11.333000
1 row selected.
SELECT INTERVAL '1' DAY – INTERVAL '1' SECOND
FROM dual;
INTERVAL'1'DAY-INTERVAL'1'SECOND
---------------------------------------------------------------------------
+000000000 23:59:59.000000000
1 row selected.
SELECT SYSDATE,
SYSDATE + INTERVAL '1' MONTH + INTERVAL '1' DAY – INTERVAL '3' SECOND
FROM dual;
SYSDATE SYSDATE+INTERVAL'1'M
-------------------- --------------------
10-JUL-2004 19:55:53 11-AUG-2004 19:55:50
1 row selected.
SELECT NUMTOYMINTERVAL(2, 'MONTH')
FROM dual;
NUMTOYMINTERVAL(2,'MONTH')
--------------------------
+000000000-02
1 row selected.
SELECT NUMTODSINTERVAL(2, 'HOUR')
FROM dual;
NUMTODSINTERVAL(2,'HOUR')
-----------------------------
+000000000 02:00:00.000000000
1 row selected.
SELECT TO_YMINTERVAL('3-10')
FROM dual;
TO_YMINTERVAL('3-10')
---------------------
+000000003-10
1 row selected.
SELECT TO_DSINTERVAL('2 10:3:45.123')
FROM dual;
TO_DSINTERVAL('210:3:45.123')
-----------------------------
+000000002 10:03:45.123000000
1 row selected.
SELECT EXTRACT(HOUR FROM NUMTODSINTERVAL(2, 'HOUR'))
FROM dual;
EXTRACT(HOURFROMNUMTODSINTERVAL(2,'HOUR'))
------------------------------------------
2
1 row selected.Please to add comments
No comments yet. Be the first to comment!