Skip to content
Advertisement

Oracle SQL : how to specify Time Zone Region

to_date('30/03/2022', 'DD/MM/YYYY')

Underlined, as hours are not specified, that means that hour is ’00:00′ I would like to specify that this is for Europe/Paris time zone region. Can you help me set-up this ? Thanks

Advertisement

Answer

A DATE data type has the components: year, month, day, hour, minute and second. It ALWAYS has those components and NEVER stores anything else (such as a time zone); so it is impossible to store a time zone in a DATE data type.

A TIMESTAMP data type has the components: year, month, day, hour, minute and second and, optionally, can store fractional seconds.

A TIMESTAMP WITH TIME ZONE data type has the components: year, month, day, hour, minute, second and time zone and, optionally, can store fractional seconds information.

Therefore, if you want to store a time zone then you should use TIMESTAMP WITH TIME ZONE and not DATE.

Your code would then be:

TO_TIMESTAMP_TZ('30/03/2022 Europe/Paris', 'DD/MM/YYYY TZR')

or using a timestamp literal:

TIMESTAMP '2022-03-30 00:00:00 Europe/Paris'

or, if you want to pass in your date in that format and add the time zone in a two-step process:

FROM_TZ(TO_TIMESTAMP('30/03/2022', 'DD/MM/YYYY'), 'Europe/Paris')

db<>fiddle here

Advertisement