+1 امتیاز
قبل در برنامه نویسی توسط (7.2هزار امتیاز)
هنگامی که یک timestamp از یک منطقه زمانی متفاوت با سرور اوراکل را در پایگاه داده اوراکل ذخیره نماییم، تنها زمان کاربر را ذخیره خواهیم کرد، و اینگونه نمی توان فهمید که زمان سیستم چه بوده است. مگر اینکه در کنار current_timestamp یک systimestamp هم ذخیره کنیم. یا محدوده زمانی کاربر را نیز در یک فیلد سوا ذخیره کنیم، که هر دو اینها کار جالبی به نظر نمی رسد.

آیا راهی وجود دارد تا این اطلاعات را در یک فیلد و به صورت متمرکز داشته باشیم؟

1 پاسخ

+1 امتیاز
قبل توسط (7.2هزار امتیاز)
 
بهترین پاسخ

برای این منظور می توانید از نوع داده TIMESTAMP WITH TIME ZONE به جای TIMESTAMP استفاده نمایید.

برای مثالاگر جدول زیر را داشته باشیم:

CREATE TABLE test_mohi (
timestamp_with_tz TIMESTAMP WITH TIME ZONE ,
timestamp_without_tz TIMESTAMP  
)

با insert زیر:

INSERT INTO test_mohi
            (timestamp_with_tz, timestamp_without_tz
            )
     VALUES (CURRENT_TIMESTAMP, CURRENT_TIMESTAMP
            )

مقدار جدول به صورت زیر تغییر می یابد:


TIMESTAMP_WITH_TZ                   TIMESTAMP_WITHOUT_TZ           
----------------------------------- -------------------------------
31-JUL-13 02.46.53.881202 PM +04:30 31-JUL-13 02.46.53.881202 PM   


1 row selected.

همانگونه که ملاحظه می کنید، در فیلدی که WITH TIME ZONE تعریف شده است، منطقه زمانی session کاربر را نیز داریم.

سوالات مشابه

0 امتیاز
1 پاسخ 1.0هزار بازدید
+1 امتیاز
1 پاسخ 305 بازدید
+1 امتیاز
1 پاسخ 1.5هزار بازدید
+1 امتیاز
1 پاسخ 972 بازدید
+1 امتیاز
1 پاسخ 501 بازدید
+1 امتیاز
1 پاسخ 808 بازدید
+1 امتیاز
1 پاسخ 400 بازدید
...