همانطور که می دانید توابع SYSDATE و SYSTIMESTAMP ساعت جاری سیستم را برمی گردانند این توابع date را بر اساس time zone سیستم عامل نمایش می دهند و اگر time zone متفاوتی برای دیتابیس تنظیم شود، تغییری در رفتار این توابع ایجاد نمی شود:
[oracle@OEL8 ~]$ timedatectl Local time: Thu 2024-02-15 13:14:48 +0330 Universal time: Thu 2024-02-15 09:44:48 UTC RTC time: Thu 2024-02-15 07:37:09 Time zone: Asia/Tehran (+0330, +0330)
SQL> select sysdate , SYSTIMESTAMP ; SYSDATE SYSTIMESTAMP --------- ---------------------------------------- 15-FEB-24 15-FEB-24 01.25.54.270895 PM +03:30 SQL> ALTER DATABASE SET TIME_ZONE='Asia/Tokyo'; Database altered. SQL> select sysdate , SYSTIMESTAMP ; SYSDATE SYSTIMESTAMP --------- ---------------------------------------- 15-FEB-24 15-FEB-24 01.26.37.200429 PM +03:30
در نسخه 23ai می توان با تنظیم پارامتر time_at_dbtimezone به مقدار USER_SQL این توابع را مجاب کرد تا date را بر اساس time zone دیتابیس برگردانند صرف نظر از time zone سیستم عامل!