0% found this document useful (0 votes)
9 views27 pages

Les 05

This document provides an overview of managing data in different time zones using various Oracle SQL functions and data types. It covers the use of CURRENT_DATE, CURRENT_TIMESTAMP, LOCALTIMESTAMP, and INTERVAL data types, as well as functions like EXTRACT, TZ_OFFSET, and FROM_TZ. Additionally, it discusses the implications of Daylight Saving Time on time zone management.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
9 views27 pages

Les 05

This document provides an overview of managing data in different time zones using various Oracle SQL functions and data types. It covers the use of CURRENT_DATE, CURRENT_TIMESTAMP, LOCALTIMESTAMP, and INTERVAL data types, as well as functions like EXTRACT, TZ_OFFSET, and FROM_TZ. Additionally, it discusses the implications of Daylight Saving Time on time zone management.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 27

Managing Data in Different Time Zones

Copyright © 2007, Oracle. All rights reserved.


Objectives

After completing this lesson, you should be able to do the


following:
• Use data types similar to DATE that store fractional seconds
and track time zones
• Use data types that store the difference between two
datetime values
• Use the following datetime functions:
– CURRENT_DATE – TZ_OFFSET
– CURRENT_TIMESTAMP – FROM_TZ
– LOCALTIMESTAMP – TO_TIMESTAMP
– DBTIMEZONE – TO_YMINTERVAL
– SESSIONTIMEZONE – TO_DSINTERVAL
– EXTRACT

5-2 Copyright © 2007, Oracle. All rights reserved.


Lesson Agenda

• CURRENT_DATE, CURRENT_TIMESTAMP,
and LOCALTIMESTAMP
• INTERVAL data types
• Using the following functions:
– EXTRACT
– TZ_OFFSET
– FROM_TZ
– TO_TIMESTAMP
– TO_YMINTERVAL
– TO_DSINTERVAL

5-3 Copyright © 2007, Oracle. All rights reserved.


Time Zones

-08:00 +07:00

+02:00 +10:00
-05:00

The image represents the time for


each time zone when Greenwich
time is 12:00.

5-4 Copyright © 2007, Oracle. All rights reserved.


TIME_ZONE Session Parameter

TIME_ZONE may be set to:


• An absolute offset
• Database time zone
• OS local time zone
• A named region
ALTER SESSION SET TIME_ZONE = '-05:00';
ALTER SESSION SET TIME_ZONE = dbtimezone;
ALTER SESSION SET TIME_ZONE = local;
ALTER SESSION SET TIME_ZONE = 'America/New_York';

5-5 Copyright © 2007, Oracle. All rights reserved.


CURRENT_DATE, CURRENT_TIMESTAMP,
and LOCALTIMESTAMP
• CURRENT_DATE:
– Returns the current date from the user session
– Has a data type of DATE
• CURRENT_TIMESTAMP:
– Returns the current date and time from the user session
– Has a data type of TIMESTAMP WITH TIME ZONE
• LOCALTIMESTAMP:
– Returns the current date and time from the user session
– Has a data type of TIMESTAMP

5-6 Copyright © 2007, Oracle. All rights reserved.


Comparing Date and Time in a Session’s
Time Zone
The TIME_ZONE parameter is set to –5:00 and then SELECT
statements for each date and time is executed to compare
differences.

ALTER SESSION
SET NLS_DATE_FORMAT = 'DD-MON-YYYY HH24:MI:SS';
ALTER SESSION SET TIME_ZONE = '-5:00';
SELECT SESSIONTIMEZONE, CURRENT_DATE FROM DUAL;
SELECT SESSIONTIMEZONE, CURRENT_TIMESTAMP FROM DUAL;
SELECT SESSIONTIMEZONE, LOCALTIMESTAMP FROM DUAL;

5-7 Copyright © 2007, Oracle. All rights reserved.


Comparing Date and Time in a Session’s
Time Zone
Results of queries:

5-8 Copyright © 2007, Oracle. All rights reserved.


DBTIMEZONE and SESSIONTIMEZONE

• Display the value of the database time zone:

SELECT DBTIMEZONE FROM DUAL;

• Display the value of the session’s time zone:


SELECT SESSIONTIMEZONE FROM DUAL;

5-9 Copyright © 2007, Oracle. All rights reserved.


TIMESTAMP Data Types

Data Type Fields

TIMESTAMP Year, Month, Day, Hour, Minute, Second


with fractional seconds

TIMESTAMP WITH TIME ZONE Same as the TIMESTAMP data type; also
includes:
TIMEZONE_HOUR, and TIMEZONE_MINUTE
or TIMEZONE_REGION

TIMESTAMP WITH LOCAL Same as the TIMESTAMP data type; also


TIME ZONE includes a time zone offset in its value

5 - 10 Copyright © 2007, Oracle. All rights reserved.


TIMESTAMP Fields

Datetime Field Valid Values


YEAR –4712 to 9999 (excluding year 0)
MONTH 01 to 12
DAY 01 to 31
HOUR 00 to 23
MINUTE 00 to 59
SECOND 00 to 59.9(N) where 9(N) is precision
TIMEZONE_HOUR –12 to 14
TIMEZONE_MINUTE 00 to 59

5 - 11 Copyright © 2007, Oracle. All rights reserved.


Difference Between DATE and TIMESTAMP

A B
-- when hire_date is ALTER TABLE employees
of type DATE MODIFY hire_date TIMESTAMP;

SELECT hire_date SELECT hire_date


FROM employees; FROM employees;


5 - 12 Copyright © 2007, Oracle. All rights reserved.
Comparing TIMESTAMP Data Types

CREATE TABLE web_orders


(order_date TIMESTAMP WITH TIME ZONE,
delivery_time TIMESTAMP WITH LOCAL TIME ZONE);

INSERT INTO web_orders values


(current_date, current_timestamp + 2);

SELECT * FROM web_orders;

5 - 13 Copyright © 2007, Oracle. All rights reserved.


Lesson Agenda

• CURRENT_DATE, CURRENT_TIMESTAMP,
and LOCALTIMESTAMP
• INTERVAL data types
• Using the following functions:
– EXTRACT
– TZ_OFFSET
– FROM_TZ
– TO_TIMESTAMP
– TO_YMINTERVAL
– TO_DSINTERVAL

5 - 14 Copyright © 2007, Oracle. All rights reserved.


INTERVAL Data Types

• INTERVAL data types are used to store the difference


between two datetime values.
• There are two classes of intervals:
– Year-month
– Day-time
• The precision of the interval is:
– The actual subset of fields that constitutes an interval
– Specified in the interval qualifier

Data Type Fields


INTERVAL YEAR TO MONTH Year, Month

INTERVAL DAY TO SECOND Days, Hour, Minute, Second with


fractional seconds

5 - 15 Copyright © 2007, Oracle. All rights reserved.


INTERVAL Fields

INTERVAL Field Valid Values for Interval


YEAR Any positive or negative integer

MONTH 00 to 11

DAY Any positive or negative integer

HOUR 00 to 23

MINUTE 00 to 59

SECOND 00 to 59.9(N) where 9(N) is precision

5 - 16 Copyright © 2007, Oracle. All rights reserved.


INTERVAL YEAR TO MONTH: Example

CREATE TABLE warranty


(prod_id number, warranty_time INTERVAL YEAR(3) TO
MONTH);
INSERT INTO warranty VALUES (123, INTERVAL '8' MONTH);
INSERT INTO warranty VALUES (155, INTERVAL '200'
YEAR(3));
INSERT INTO warranty VALUES (678, '200-11');
SELECT * FROM warranty;

5 - 17 Copyright © 2007, Oracle. All rights reserved.


INTERVAL DAY TO SECOND
Data Type: Example

CREATE TABLE lab


( exp_id number, test_time INTERVAL DAY(2) TO SECOND);

INSERT INTO lab VALUES (100012, '90 00:00:00');


INSERT INTO lab VALUES (56098,
INTERVAL '6 03:30:16' DAY TO SECOND);

SELECT * FROM lab;

5 - 18 Copyright © 2007, Oracle. All rights reserved.


Lesson Agenda

• CURRENT_DATE, CURRENT_TIMESTAMP,
and LOCALTIMESTAMP
• INTERVAL data types
• Using the following functions:
– EXTRACT
– TZ_OFFSET
– FROM_TZ
– TO_TIMESTAMP
– TO_YMINTERVAL
– TO_DSINTERVAL

5 - 19 Copyright © 2007, Oracle. All rights reserved.


EXTRACT

• Display the YEAR component from the SYSDATE.


SELECT EXTRACT (YEAR FROM SYSDATE) FROM DUAL;

• Display the MONTH component from the HIRE_DATE for


those employees whose MANAGER_ID is 100.
SELECT last_name, hire_date,
EXTRACT (MONTH FROM HIRE_DATE)
FROM employees
WHERE manager_id = 100;

5 - 20 Copyright © 2007, Oracle. All rights reserved.


TZ_OFFSET

Display the time zone offset for the 'US/Eastern',


'Canada/Yukon' and 'Europe/London' time zones:

SELECT TZ_OFFSET('US/Eastern'),
TZ_OFFSET('Canada/Yukon'),
TZ_OFFSET('Europe/London')
FROM DUAL;

5 - 21 Copyright © 2007, Oracle. All rights reserved.


FROM_TZ

Display the TIMESTAMP value '2000-03-28 08:00:00' as a


TIMESTAMP WITH TIME ZONE value for the
'Australia/North' time zone region.

SELECT FROM_TZ(TIMESTAMP
'2000-07-12 08:00:00', 'Australia/North')
FROM DUAL;

5 - 22 Copyright © 2007, Oracle. All rights reserved.


TO_TIMESTAMP

Display the character string '2007-03-06 11:00:00'


as a TIMESTAMP value:

SELECT TO_TIMESTAMP ('2007-03-06 11:00:00',


'YYYY-MM-DD HH:MI:SS')
FROM DUAL;

5 - 23 Copyright © 2007, Oracle. All rights reserved.


TO_YMINTERVAL

Display a date that is one year and two months after the hire
date for the employees working in the department with the
DEPARTMENT_ID 20.

SELECT hire_date,
hire_date + TO_YMINTERVAL('01-02') AS
HIRE_DATE_YMININTERVAL
FROM employees
WHERE department_id = 20;

5 - 24 Copyright © 2007, Oracle. All rights reserved.


TO_DSINTERVAL

Display a date that is 100 days and 10 hours after the hire date
for all the employees.
SELECT last_name,
TO_CHAR(hire_date, 'mm-dd-yy:hh:mi:ss') hire_date,
TO_CHAR(hire_date +
TO_DSINTERVAL('100 10:00:00'),
'mm-dd-yy:hh:mi:ss') hiredate2
FROM employees;

5 - 25 Copyright © 2007, Oracle. All rights reserved.


Daylight Saving Time

• First Sunday in April


– Time jumps from 01:59:59 AM to 03:00:00 AM.
– Values from 02:00:00 AM to 02:59:59 AM are not valid.
• Last Sunday in October
– Time jumps from 02:00:00 AM to 01:00:01 AM
– Values from 01:00:01 AM to 02:00:00 AM are ambiguous
because they are visited twice.

5 - 26 Copyright © 2007, Oracle. All rights reserved.


Summary

In this lesson, you should have learned how to use the


following functions:
• CURRENT_DATE
• CURRENT_TIMESTAMP
• LOCALTIMESTAMP
• DBTIMEZONE
• SESSIONTIMEZONE
• EXTRACT
• TZ_OFFSET
• FROM_TZ
• TO_TIMESTAMP
• TO_YMINTERVAL
• TO_DSINTERVAL

5 - 27 Copyright © 2007, Oracle. All rights reserved.

You might also like