The SYS_EXTRACT_UTC function in Oracle SQL is a simple and powerful tool for standardizing time. Its one and only job is to convert a TIMESTAMP WITH TIME ZONE value into its equivalent time at UTC (Coordinated Universal Time), also known as GMT.
This is essential for global applications. By converting all local timestamps to UTC, you can store and compare them in a single, standard time zone, which eliminates confusion about Daylight Saving Time and regional offsets.
What is the SYS_EXTRACT_UTC Function in Oracle?
The SYS_EXTRACT_UTC(datetime_value) function takes a timestamp that includes a time zone offset (like -05:00) or a region name (like 'US/Eastern') and returns a new TIMESTAMP value that represents the exact same moment in time, but as it would appear on a clock in the UTC (+00:00) time zone.
- Input: A
TIMESTAMP WITH TIME ZONEvalue. - Output: A
TIMESTAMPvalue (without a time zone offset, because it's now implied to be UTC).
SYS_EXTRACT_UTC Function Syntax
The syntax for SYS_EXTRACT_UTC is very simple:
SYS_EXTRACT_UTC(datetime_with_timezone)
Let's break that down:
datetime_with_timezone: TheTIMESTAMP WITH TIME ZONEvalue you want to convert to UTC.
Oracle SYS_EXTRACT_UTC Function Examples
Here are two practical examples of how to use SYS_EXTRACT_UTC.
Example 1: Converting a Timestamp with an Offset using SYS_EXTRACT_UTC
This example takes a timestamp that is in the -08:00 time zone (like US Pacific Time) and converts it to its UTC equivalent.
11:30 in a -08:00 zone is 8 hours behind UTC. To get the UTC time, we must add 8 hours. 11:30 + 8 hours = 19:30.
Query:
SELECT
SYS_EXTRACT_UTC(
TIMESTAMP '2025-03-28 11:30:00.00 -08:00'
) AS "UTC_Time"
FROM DUAL;
Result: (The result 19:30 is 7:30 PM)
UTC_Time
---------------------------------------------------------------------------
28-MAR-25 07.30.00.000000 PM
Example 2: Converting a Timestamp with a Region Name using SYS_EXTRACT_UTC
This example uses a named time zone. America/New_York is in a -05:00 offset on this date. The function will automatically calculate the offset and convert the time to UTC.
14:00 (2:00 PM) in a -05:00 zone is 14:00 + 5 hours = 19:00 UTC.
Query:
SELECT
SYS_EXTRACT_UTC(
TIMESTAMP '2025-11-20 14:00:00.00 America/New_York'
) AS "UTC_Time"
FROM DUAL;
Result: (The result 19:00 is 7:00 PM)
UTC_Time
---------------------------------------------------------------------------
20-NOV-25 07.00.00.000000 PM
