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

با اجرای کوئری زیر

SELECT SYSDATE, CURRENT_TIMESTAMP, SYSTIMESTAMP  FROM DUAL

خروجی زیر را دریافت کردم که برایم عجیب است!

علت این اختلاف ساعت چیست؟

ساعت سیستم هنگام کوئری زدن مطابق SYSDATE بود.

1 پاسخ

+1 امتیاز
قبل توسط (7.2هزار امتیاز)
انتخاب شده قبل توسط
 
بهترین پاسخ
مقادیری که با (SYS (SYSDATE , SYSTIMESTAMP شروع می شوند زمان جاری با time zone ست شده بر روی سرور اوراکل را نشان می دهند و مقادیری که با CURRENT_(CURRENT_DATE , CURRENT_TIMESTAMP شروع می شوند زمان جاری سرور با time zone تنظیم شده بر روی session را نمایش می دهند.

لذا اگر شما بر روی سیستمی که سرور نصب است این کوئری را اجرا کنید مقدار یکسانی برای هر دو مورد خروجی می گیرید، ( مگر اینکه session time zone را تغییر دهید) . اما اگر سرور و کلاینت در دو سیستم مجزا باشند و time zone آنها با یکدیگر فرق داشته باشند، مقادیر متفاوتی را دریافت خواهید کرد.

در این مورد timezone کلاینت درست است +4:30 اما time zone سرور به اشتباه +4:00 است که باید اصلاح شود.
قبل توسط (1.1هزار امتیاز)
یعنی اونایی که CURRENT دارند زمان جاری کلاینت رو نشون نمی دن و "زمان جاری سرور با time zone تنظیم شده بر روی session کلاینت را نمایش می ده" ؟
قبل توسط (7.2هزار امتیاز)
+1
دقیقا همین طور است!

سوالات مشابه

+1 امتیاز
1 پاسخ 716 بازدید
+1 امتیاز
1 پاسخ 305 بازدید
+1 امتیاز
1 پاسخ 870 بازدید
+1 امتیاز
1 پاسخ 331 بازدید
0 امتیاز
1 پاسخ 880 بازدید
+1 امتیاز
1 پاسخ 389 بازدید
+1 امتیاز
1 پاسخ 1.4هزار بازدید
+1 امتیاز
1 پاسخ 197 بازدید
...