আমি কীভাবে মাইএসকিউএল এর বর্তমান সময় অঞ্চল পেতে পারি?


217

মাইএসকিউএলে এমন কোনও ফাংশন আছে কি না কেউ জানেন?

হালনাগাদ

এটি কোনও বৈধ তথ্য আউটপুট দেয় না:

mysql> SELECT @@global.time_zone, @@session.time_zone;
+--------------------+---------------------+
| @@global.time_zone | @@session.time_zone |
+--------------------+---------------------+
| SYSTEM             | SYSTEM              |
+--------------------+---------------------+

অথবা সম্ভবত মাইএসকিউএল নিজেও সঠিকভাবে time_zoneব্যবহৃত ব্যবহারগুলি জানতে পারে না , এটি ভাল, আমরা PHPযতক্ষণ না বৈধ তথ্য পেতে পারি ততক্ষণ আমরা এখানে জড়িত থাকতে পারি SYSTEM...


3
"আমরা এখানে পিএইচপি জড়িত করতে পারি" - এবং পিএইচপি এর উদাহরণটি কি সর্বদা মাইএসকিউএল সার্ভারের মতো একই মেশিনে থাকবে?
ভোলকারক

হ্যাঁ, তারা একই মেশিনে থাকবে।
ব্যবহারকারী 198729

10
@@system_time_zoneনীচে আমার উত্তরে বর্ণিত হিসাবে চেষ্টা করুন ।
অ্যান্ড্রু

যেহেতু প্রশ্ন জিজ্ঞাসা করা হয়েছিল আরও উত্তর যুক্ত হয়েছিল, তাই সম্ভবত গৃহীত উত্তরগুলিতে পুনর্বিবেচনা করবেন?
টিমো হুভিনেন

1
যদিও মাইএসকিউএল সার্ভার এবং পিএইচপি একই সার্ভারে রয়েছে, তারা তাদের সেটিংসের উপর ভিত্তি করে বিভিন্ন সময় অঞ্চল বেছে নিতে পারে। এবং এই সময়গুলি আপনার ওএস এবং পিএইচপি / মাইএসকিউএল শো থেকে পৃথক হতে পারে।
বিমল পাডেল

উত্তর:


227

ম্যানুয়াল থেকে ( বিভাগ 9.6 ):

গ্লোবাল এবং ক্লায়েন্ট-নির্দিষ্ট সময় অঞ্চলগুলির বর্তমান মানগুলি এইভাবে পুনরুদ্ধার করা যেতে পারে:
mysql> SELECT @@global.time_zone, @@session.time_zone;

উপরের রিটার্নগুলি সম্পাদনা করুনSYSTEM যদি মাইএসকিউএলটি সিস্টেমের টাইমজোনটিতে স্লেভ সেট করা থাকে যা সহায়ক থেকে কম less যেহেতু আপনি পিএইচপি ব্যবহার করছেন, যদি মাইএসকিউএল থেকে উত্তর হয় SYSTEM, আপনি তারপরে সিস্টেমটিকে জিজ্ঞাসা করতে পারেন যে এটি কোন টাইমজোনটির মাধ্যমে ব্যবহার করছে date_default_timezone_get। (অবশ্যই, ভোলকারক উল্লেখ করেছেন যে, পিএইচপি অন্য কোনও সার্ভারে চলতে পারে, তবে অনুমান হিসাবে, ওয়েব সার্ভার এবং যে ডিবি সার্ভারের সাথে এটি কথা বলছে সেট করা হয়েছে [যদি বাস্তবে না থাকে তবে একই টাইমজোনটি একটি নয়) বিশাল লিপ।) তবে সাবধান হন (মাইএসকিউএল হিসাবে), আপনি পিএইচপি যে টাইমজোনটি ব্যবহার করতে পারেন তা সেট করতে পারেন (date_default_timezone_set), যার অর্থ এটি ওএস ব্যবহারের চেয়ে পৃথক মানের প্রতিবেদন করতে পারে। আপনি যদি পিএইচপি কোডের নিয়ন্ত্রণে থাকেন তবে আপনি এটি করছেন এবং ঠিক আছেন কিনা তা আপনার জানা উচিত।

তবে মাইএসকিউএল সার্ভারটি টাইমজোন কী টাইমজোন ব্যবহার করছে তার পুরো প্রশ্নটি একটি স্পর্শকাতর হতে পারে কারণ সার্ভারের টাইমজোনটি কোন টাইমজোনটিতে রয়েছে তা জিজ্ঞাসা করা আপনাকে ডাটাবেসের ডেটা সম্পর্কে একেবারে কিছুই বলে না । বিস্তারিত পড়ুন:

আরও আলোচনা :

আপনি যদি সার্ভারের নিয়ন্ত্রণে থাকেন তবে অবশ্যই আপনি তা নিশ্চিত করতে পারবেন যে সময় অঞ্চলটি একটি পরিচিত পরিমাণ। আপনি যদি সার্ভারের নিয়ন্ত্রণে না থাকেন তবে আপনি নিজের সংযোগের সাহায্যে টাইমজোনটি এভাবে সেট করতে পারেন :

set time_zone = '+00:00';

এটি GMT- র জন্য সময় অঞ্চল নির্ধারণ করে, যাতে পরবর্তী কোনও ক্রিয়াকলাপ (যেমন now()) GMT ব্যবহার করে।

দ্রষ্টব্য, যদিও, সেই সময় এবং তারিখের মানগুলি মাইএসকিউএলে টাইমজোন তথ্যের সাথে সঞ্চয় করা হয় না :

mysql> create table foo (tstamp datetime) Engine=MyISAM;
Query OK, 0 rows affected (0.06 sec)

mysql> insert into foo (tstamp) values (now());
Query OK, 1 row affected (0.00 sec)

mysql> set time_zone = '+01:00';
Query OK, 0 rows affected (0.00 sec)

mysql> select tstamp from foo;
+---------------------+
| tstamp              |
+---------------------+
| 2010-05-29 08:31:59 |
+---------------------+
1 row in set (0.00 sec)

mysql> set time_zone = '+02:00';
Query OK, 0 rows affected (0.00 sec)

mysql> select tstamp from foo;
+---------------------+
| tstamp              |
+---------------------+
| 2010-05-29 08:31:59 |      <== Note, no change!
+---------------------+
1 row in set (0.00 sec)

mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2010-05-29 10:32:32 |
+---------------------+
1 row in set (0.00 sec)

mysql> set time_zone = '+00:00';
Query OK, 0 rows affected (0.00 sec)

mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2010-05-29 08:32:38 |      <== Note, it changed!
+---------------------+
1 row in set (0.00 sec)

সুতরাং সার্ভারের সময় অঞ্চল বুদ্ধিমান ডান এখন ফাংশন যে সময় পান পরিপ্রেক্ষিতে শুধুমাত্র গুরুত্বপূর্ণ, যেমন now(), unix_timestamp()ইত্যাদি .; এটি আপনাকে ডেটাবেস ডেটাতে টাইমজোন তারিখগুলি কী ব্যবহার করছে সে সম্পর্কে কিছুই জানায় না। আপনি ধরে নিতে পারেন যে সেগুলি সার্ভারের টাইমজোন ব্যবহার করে লেখা হয়েছিল তবে এই ধারণাটি ত্রুটিযুক্ত হতে পারে। ডেটাতে যে কোনও তারিখ বা সময় সঞ্চিত রয়েছে তার টাইমজোন জানতে আপনার অবশ্যই তা নিশ্চিত করতে হবে যে তারা টাইমজোন তথ্য সংরক্ষণ করেছে বা (যেমন আমি করি) তারা সর্বদা GMT এ আছেন তা নিশ্চিত করতে হবে।

সার্ভারের টাইমজোন ত্রুটিযুক্ত ব্যবহার করে ডেটা কেন লেখা হয়েছিল তা ধরে নিচ্ছেন? ঠিক আছে, একটি জিনিসের জন্য, ডেটাটি একটি সংযোগ ব্যবহার করে লিখিত হতে পারে যা একটি ভিন্ন টাইমজোন সেট করে। ডাটাবেসটি একটি সার্ভার থেকে অন্য সার্ভারে স্থানান্তরিত হতে পারে, যেখানে সার্ভারগুলি বিভিন্ন সময় অঞ্চলগুলিতে ছিল (যখন আমি টেক্সাস থেকে ক্যালিফোর্নিয়ায় চলে এসেছি এমন একটি ডেটাবেস উত্তরাধিকার সূত্রে পেয়েছিলাম)) কিন্তু এমনকি যদি ডাটা তার বর্তমান সময় জোনের সাথেই সার্ভারে লেখা আছে,, এটা এখনও দ্ব্যর্থক আছে। গত বছর, মার্কিন যুক্তরাষ্ট্রে, 1 নভেম্বর ভোর 2:00 টায় ডাইটলাইট সঞ্চয় সময় বন্ধ করা হয়েছিল। ধরুন আমার সার্ভার ক্যালিফোর্নিয়ায় প্যাসিফিক টাইমজোন ব্যবহার করছে এবং আমার মূল্য আছে2009-11-01 01:30:00ডাটাবেসে এটি কথন ছিল? সে 1 নভেম্বর পিডিটি সকাল 1:30 ছিল, বা 1 নভেম্বর পিএসটি 1:30 পিএমটি (এক ঘন্টা পরে)? আপনার জানার কোনও উপায় নেই। নৈতিক: সর্বদা GMT- এ তারিখ / বার সঞ্চয় করুন (যা ডিএসটি করে না) এবং প্রয়োজনীয় সময় হিসাবে অঞ্চলটি রূপান্তর করুন।


5
@ ব্যবহারকারী ১৯87 87 29৯: এটি অর্থহীন নয় যদিও এটি আশানুরূপ কার্যকর নয়। এর অর্থ কী: ওএসকে জিজ্ঞাসা করুন, মাইএসকিউএল এটি স্ল্যাভ করছে।
টিজে ক্রাউডার

শুধু কৌতূহলী, কেন আমাদের নিজেরাই সময় অঞ্চল নির্ধারণ করতে হবে এবং তারপরে এটি পুনরুদ্ধার করতে হবে? এই ধরণের উদ্দেশ্যটি কি হেরে যায়? মানে আমি টাইমজোনটির জন্য মাইএসকিউএল জিজ্ঞাসা করতে চাই কারণ উত্তরটি আমি জানি না know হতে পারে আমি বিভ্রান্ত হয়েছি এবং জিনিসগুলি ভুল পেয়েছি। কেউ কি ব্যাখ্যা করতে পারেন?
সেন্থিল

1
@ সেনথিল মাইএসকিউএল টাইপটিতে DATETIMEটাইমজোন সম্পর্কিত তথ্য নেই। অতএব, আমি মনে করি যে এখানে অন্তর্নিহিত অন্তর্নিহিত দর্শনটি মাইএসকিউএলকে যথাসম্ভব টাইমজোন অন্ধ হতে হবে - যার অর্থ ব্যবহারকারী ইউটিসি বা সার্ভারের যে টাইম জোনে রয়েছে সেগুলি এক সময় অঞ্চলের সাথে লেগে থাকা, সেই অঞ্চলে সমস্ত কিছু সঞ্চয় করে এবং অ্যাপ্লিকেশন পর্যায়ে বা CONVERT_TZ()( dev.mysql.com/doc/refman/5.0/en/… ) ব্যবহার করে কোনও রূপান্তর করুন অন্তত, আমি সর্বদা বুঝতে পারি যে এটি কীভাবে কাজ করা উচিত, এই ক্ষেত্রটিতে মাইএসকিউএল সরবরাহ করে এমন স্পার অপশনগুলি দেখে।
পেক্কা

ধন্যবাদ তবে এটি এখনও সমাধান হয়নি, now()পিএইচপি- র ফলাফলের মাধ্যমে আমি কীভাবে tz তথ্য পাব ?
ব্যবহারকারী 198729

আমি "টাইমস্ট্যাম্প সংরক্ষণ করার সময়" একটি টাইমজোনকে স্টিক করুন "এর সাথে সম্পূর্ণরূপে একমত হয়েছি .. তবে এটি->" ..স সার্ভারটি টাইমজোনটিতে আছে .. "আপনি কীভাবে এটি খুঁজে পাবেন? ধরা যাক আপনি সমস্ত টাইমস্ট্যাম্প মানগুলি ইউটিসি হিসাবে সংরক্ষণ করেছেন। তবে আপনার সার্ভারটি অন্য সময় অঞ্চলে রয়েছে এবং আপনি সেই সময় অঞ্চল অনুযায়ী টাইমস্ট্যাম্প মানগুলি দেখাতে চান । তাহলে আপনি কীভাবে জানবেন যে আপনার সার্ভারটি কোন টাইমজোনটিতে রয়েছে? তবেই আপনি ডানদিকে রূপান্তর করতে CONVERT_TZ () এ কিছু মান দিয়ে যেতে পারেন?
সেন্থিল

196

নীচের ক্যোয়ারীটি বর্তমান সেশনের সময় অঞ্চলটি প্রদান করে।

select timediff(now(),convert_tz(now(),@@session.time_zone,'+00:00'));

6
এটি সত্যই সঠিক উত্তর, কারণ এটি প্রমাণ করে যে 'সিস্টেম' রূপান্তরকরণের সময়সীমা হিসাবে স্বীকৃত, এটি এখনকার (যেমন) এখন কোনও টাইমজোনকে রূপান্তর করার জন্য যথেষ্ট পর্যাপ্ত sufficient
নীলস্কেপ

5
ধন্যবাদ, এটি ব্যবহার করে আমি যে ফর্ম্যাটটি চেয়েছিলাম তা পেতে সক্ষম হয়েছি:select time_format(timediff(now(),convert_tz(now(),@@session.time_zone,'+00:00')),'%H%i');
জর্ডানবটকার

97
SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP)সহজ।
জাকুব বৃন্দা

3
অথবা SELECT TIMESTAMPDIFF(SECOND, NOW(), UTC_TIMESTAMP);সেকেন্ডের মধ্যে পার্থক্য পেতে।
ফিলফ্রেও

106

কেবল SELECT @@system_time_zone;

রিটার্নস PST (বা আপনার সিস্টেমে যা প্রাসঙ্গিক হোক)।

আপনি যদি সেশন সময় অঞ্চল নির্ধারণ করার চেষ্টা করছেন আপনি এই কোয়েরিটি ব্যবহার করতে পারেন:
SELECT IF(@@session.time_zone = 'SYSTEM', @@system_time_zone, @@session.time_zone);

যা সিস্টেম টাইমজোন থেকে পৃথক হলে সেশন টাইমজোনটি ফিরিয়ে দেবে।


6
একমাত্র ক্ষতিটি হ'ল যদি দিবালোক সংরক্ষণের সময় পরিবর্তনের কারণে টাইমজোন পরিবর্তিত হয় তবে এটি সার্ভারটি শুরু করার সময় "স্মরণ করা" ছিল এমনটির প্রতিবেদন দিবে, মাইএসকিএল বাগ দেখুন 9518
চিহ্নিত করুন

72

জাকুব বৃন্দনা যেমন (স্রষ্টা বা প্রশাসক এবং নোটর্ম ) মন্তব্যগুলিতে উল্লেখ করেছেন, TIMEব্যবহারের জন্য অফসেটের বর্তমান টাইমজোন নির্বাচন করতে:

SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP);

এটি ফিরে আসবে: 02:00:00যদি আপনার তারিখটি সেই তারিখটির জন্য +2: 00 হয়

আমি এখানে একটি চিটশিট তৈরি করেছি: মাইএসকিউএল এর উচিত কি এর টাইমজোনটি ইউটিসি তে সেট করা উচিত?


অথবা SELECT TIMESTAMPDIFF(SECOND, NOW(), UTC_TIMESTAMP);সেকেন্ডের মধ্যে পার্থক্য পেতে।
ফিলফ্রেও

@ ফিলফ্রেওতে অ্যাড-অন - নোট করুন যে প্যারামিটারগুলি টিআইএমইডিএফএফের তুলনায় TIMESTAMPDIFF এ উল্টো করা উচিত। এই উত্তরে প্রদত্ত উদাহরণটি গ্রহণের জন্য, যদি টিআইএমডিআইএফএফ ফিরে আসে 02:00:00, ইউনিটটি যদি ঘন্টা হয় তবে সংশ্লিষ্ট টাইমস্ট্যাম্পডিডিএফফ ফিরে আসবে -2, ইউনিট যদি নূন্যতম হয় ইত্যাদি। সময়সীমার -120সাথে সম্পর্কিত সাইন পেতে, প্যারামিটারগুলি স্যুপ করতে: টাইমজোনটির জন্য SELECT TIMESTAMPDIFF(MINUTE, UTC_TIMESTAMP, NOW())প্রত্যাশিত প্রত্যাবর্তন করবে 120+2: 00। মিনিট নির্দিষ্ট করার কারণ, এখানে 30 বা 45 মিনিটের অফসেটের কয়েকটি টাইমজোন রয়েছে, এন.ইউইকিপিডিয়া.org
উইকি /

1
এটি গ্রহণযোগ্য উত্তরের চেয়ে অনেক ভাল উত্তর কারণ এটি সরাসরি প্রশ্নের উত্তর দেয় এবং কেবল তত্ত্বের পরিবর্তে একটি সমাধান দেয়।
সুপারশন

10

মাইএসকিএলের বর্তমান সময় অঞ্চল পেতে আপনি নিম্নলিখিত জিনিসগুলি করতে পারেন:

 1. SELECT @@system_time_zone;   //from this you can get the system timezone 
 2. SELECT IF(@@session.time_zone = 'SYSTEM', @@system_time_zone, @@session.time_zone) //This will give you time zone if system timezone is different from global timezone

এখন আপনি যদি মাইএসকিএল টাইমজোনটি পরিবর্তন করতে চান তবে:

 1. SET GLOBAL time_zone = '+00:00'   //this will set mysql timezone in UTC
 2. SET @@session.time_zone = "+00:00";  //by this you can chnage the timezone only for your particular session 

6
SELECT EXTRACT(HOUR FROM (TIMEDIFF(NOW(), UTC_TIMESTAMP))) AS `timezone`

এটি টাইমজোনটিকে পূর্ণসংখ্যার হিসাবে ফিরিয়ে আনবে (উদাঃ -6) : ইতিবাচক বা নেতিবাচক সময়গুলি হ্যান্ডলিং করে (এখানে EXTRACTখেলাটি আসে: HOURএকা ফাংশনটি নেতিবাচক সময়কে ইতিবাচক হিসাবে ফেরত দেয়)।


6

যে কোনও ব্যক্তির কাছে মাইএসকিএল ডিবি-র টাইমজোন সন্ধান করতে আসুন।

এই প্রশ্নের সাথে আপনি বর্তমান টাইমজোন পেতে পারেন:

mysql> SELECT @@system_time_zone as tz;
+-------+
|  tz   |
+-------+
|  CET  |
+-------+

4

বর্ণনায় উল্লিখিত কমান্ডটি "SYSTEM" প্রদান করে যা নির্দেশ করে যে এটি সার্ভারের সময় অঞ্চল গ্রহণ করে। যা আমাদের প্রশ্নের জন্য কার্যকর নয়।

নিম্নলিখিত কোয়েরি সময় অঞ্চল বুঝতে সহায়তা করবে

SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP) as GMT_TIME_DIFF;

উপরের ক্যোয়ারী আপনাকে সমন্বিত ইউনিভার্সাল সময় (ইউটিসি) এর সাথে সম্মতি সহ সময়ের ব্যবধান দেবে। সুতরাং আপনি সহজেই সময় অঞ্চলটি বিশ্লেষণ করতে পারেন। যদি ডাটাবেস টাইম জোন IST হয় তবে আউটপুট 5:30 হবে

UTC_TIMESTAMP

মাইএসকিউএল-এ, ইউটিসিটাইমস্যাম্প YYYY-MM-DD HH: MM: SS 'বা YYYYMMDDHHMMSS.uuuuuu ফর্ম্যাটটির ব্যবহারের উপর নির্ভর করে যেমন কোনও স্ট্রিং বা সংখ্যাগত প্রসঙ্গে।

এখন ()

এখন () ফাংশন। মাইএসকিউএল এখন () ফাংশনের প্রসঙ্গে (সংখ্যাসূচক বা স্ট্রিং) উপর নির্ভর করে 'ওয়াইওয়াই-এমএম-ডিডি এইচ: এমএম: এসএস' ফর্ম্যাট বা YYYYMMDDHHMMSS.uuuuuu ফর্ম্যাটে বর্তমান তারিখ এবং সময়ের মান প্রদান করে। CURRENT_TIMESTAMP, CURRENT_TIMESTAMP (), LOCALTIME, LOCALTIME (), LOCALTIMESTAMP, LOCALTIMESTAMP () এখন NOW এর সমার্থক শব্দ ()।


2

পরীক্ষা করে দেখুন মাইএসকিউএল সার্ভার টাইম জোন সাপোর্ট এবং system_time_zoneসিস্টেম ভেরিয়েবল। এটা কি সাহায্য করে?


@ ব্যবহারকারীর দয়া করে আপনার প্রশ্নটিতে আপনি কী তথ্যটি (সার্ভারের সময় অঞ্চল? ক্লায়েন্টের?) অনুসন্ধান করছেন এবং কী কী সরঞ্জামগুলি আপনার নিষ্পত্তি করছে তা আপনার প্রশ্নে বানান করতে পারেন? আপনি পিএইচপি উল্লেখ। আপনি কমান্ড লাইন অ্যাক্সেস করতে পারেন?
পেক্কা

5
@ ব্যবহারকারীর এছাড়াও, আমি দেখতে পেলাম যে আপনি সাহায্যকারী হওয়ার চেষ্টা করছেন এবং ঠিক ভুল নয় এমন লোকদের কাছ থেকে কিছুটা ডিক কমিয়ে দেওয়ার উত্তর হিসাবে এসেছেন। ভোট এবং পয়েন্ট হারাতে আমার আপত্তি নেই, তবে আপনার মনোভাব সমাধানের জন্য আরও কিছু দেখার জন্য উত্সাহী নয়।
পেক্কা

3
@ ব্যবহারকারী যেমনটি বলেছিলাম, আপনার দৃষ্টিভঙ্গি আমাকে আপনার আরও উত্তরের জন্য গবেষণা করতে প্রেরণা দিচ্ছে না, বিশেষত আপনি সরবরাহ করেন না এমন তথ্যের আলোকে। দুঃখিত।
পেক্কা

3
@ ব্যবহারকারী198729: বাহ, মনোভাব হারান। মানুষকে সত্যিই সাহায্য করার জন্য পেক্কার এক ধরণের লোক। যদি সৌজন্য একা আপনাকে অনুপ্রাণিত করতে যথেষ্ট না হয় তবে স্বার্থের চেষ্টা করুন।
টিজে ক্রাউডার

2
কেবল আমার চিন্তাভাবনা: যদি ব্যবহারকারী আমার পোস্টে একই জিনিস করত তবে আমি অপরাধ করতাম না। আমি বলতে চাইছি, সময়সীমা চাপ বা হতাশা মানুষের চারপাশে কয়েকটি রুক্ষ প্রান্ত যুক্ত করে, তবে আমি মনে করি আমাদের এটি কিছুটা হলেও বাড়িয়ে দেওয়া উচিত। আমি খুব ক্ষমা করছি: |
সেন্থিল

1

আমার পিএইচপি ফ্রেমওয়ার্ক ব্যবহার করে

SET LOCAL time_zone='Whatever'

কানেক্ট করার পরে, যেখানে 'যাই হোক না কেন' == তারিখ_পরিচালনা_টাইমজোন_জেট ()

আমার সমাধান নয়, তবে এটি নিশ্চিত করে SYSTEM যে মাইএসকিউএল সার্ভারের টাইমজোন সর্বদা পিএইচপি-র মতো হয়

সুতরাং, হ্যাঁ, পিএইচপি দৃ strongly়ভাবে কল্পনা করা হয়েছে এবং এটি প্রভাবিত করতে পারে


1

আপনার সময় অঞ্চল অনুযায়ী বর্তমান সময় পেতে, আপনি নিম্নলিখিত ব্যবহার করতে পারেন (আমার ক্ষেত্রে এটি '+5: 30')

DATE_FORMAT (রূপান্তর_টিজ (এখন (), @@ সেশন.টাইম_জোন, '+ 05:30'), '% Y-% m-% d') নির্বাচন করুন


0

সিস্টেমের টাইমজোন পরিবর্তন করার পরে আপনাকে কেবল মাইএসকিএলডি পুনরায় চালু করতে হবে ..

মাইএসকিউএলের গ্লোবাল টাইম জোনটি সিস্টেমের টাইমজোন নেয়। আপনি যখন সিস্টেমের এ জাতীয় কোনও বৈশিষ্ট্য পরিবর্তন করেন, আপনার কেবল মাইকিউএইচএলডিটি পুনরায় চালু করতে হবে।


ওএসের সময় অঞ্চল পরিবর্তন করার পরে, মাইএসকিএল সন্নিবেশকারীরা নতুন টাইমজোন ব্যবহার করবে তবে এখনই নির্বাচন করুন (); এবং বর্তমান_টাইমস্ট্যাম্প নির্বাচন করুন; কমান্ডগুলি এখনও পুরানো সময় অঞ্চল ব্যবহার করবে। এই সমস্ত সিঙ্ক আপ করতে, মাইএসকিএল পরিষেবাটি আবার চালু করতে হবে।
মনোজ কুমার জি

0

আপনার টাইমস্ট্যাম্পের একটিতে একটি ডামি রেকর্ড সন্নিবেশ করুন যে রেকর্ডটি নির্বাচন করুন এবং টাইমস্ট্যাম্পের মান পান। সেই রেকর্ডটি মুছুন। সার্ভার ডেটা লেখার জন্য যে টাইমজোনটি ব্যবহার করছে এবং পিএইচপি টাইমজোনগুলি উপেক্ষা করে তা নিশ্চিত হয়ে ওঠে।


0

আপনি নিম্নলিখিত চেষ্টা করতে পারেন:

select sec_to_time(TIME_TO_SEC( curtime()) + 48000);

এখানে আপনি আপনার সময়ের পার্থক্যটিকে সেকেন্ড হিসাবে নির্দিষ্ট করতে পারবেন


1
আপনার অফসেটগুলি যোগ এবং বিয়োগ করা উচিত নয়। দিবালোকের কথা বলার নিয়ম সহ এটি একটি খনি ক্ষেত্র
15

0

LPAD(TIME_FORMAT(TIMEDIFF(NOW(), UTC_TIMESTAMP),’%H:%i’),6,’+')মাইএসকিউএল এর টাইমজোন ফর্ম্যাটে একটি মান পেতে ব্যবহার করুন যা আপনি সহজেই ব্যবহার করতে পারেন CONVERT_TZ()। নোট করুন যে টাইমজোন আপনার অফসেটটি কেবলমাত্র সেই মুহুর্তে বৈধ যেখানে অভিব্যক্তিটি মূল্যায়ন করা হয় যেহেতু আপনার যদি দিবালোকের সঞ্চয় সময় থাকে তবে অফসেট সময়ের সাথে সাথে পরিবর্তিত হতে পারে। তবুও NOW()স্থানীয় সময়ের সাথে অফসেটটি সংরক্ষণ করার জন্য অভিব্যক্তিটি একত্রে দরকারী , যা NOW()ফলনকে ক্ষতিগ্রস্ত করে। (ডিএসটি টাইমজোনগুলিতে, NOW()বছরে একবারে এক ঘন্টা পিছনে ঝাঁপ দেয়, সুতরাং সময় স্বতন্ত্র পয়েন্টগুলির জন্য কিছু সদৃশ মান রয়েছে)।


0

এটা হতে পারে

select timediff(current_time(),utc_time())

আপনি সরাসরি এইভাবে টাইমজোন মান পাবেন না।

@@global.time_zone এটি একটি পরিবর্তনশীল হিসাবে ব্যবহার করা যায় না এবং এটি মানটি দেয় 'SYSTEM'

যদি আপনার ব্যবহারের পরিবর্তিত সময় অঞ্চল নিয়ে একটি সেশনে আপনার ক্যোয়ারীটি ব্যবহার করতে হয় session SET TIME_ZONE =তবে আপনি এটিটি পেয়ে যাবেন @@session.time_zone। আপনি যদি জিজ্ঞাসা @@global.time_zone, তারপর আপনি পাবেন'SYSTEM'

আপনি চেষ্টা যদি datediff, date_subঅথবা timediffসঙ্গে now()এবংutc_time() পরে হন তবে আপনি সম্ভবত রূপান্তর সমস্যাগুলিতে চলে যাবেন।

তবে উপরে উল্লিখিত জিনিসগুলি সম্ভবত কিছু সার্ভার সংস্করণ দিয়ে কাজ করবে। আমার সংস্করণ 5.5.43-37 এবং একটি হোস্টেড সমাধান।


এটি পরিষ্কারভাবে প্রশ্নের উত্তর দেয় না। জিজ্ঞাসিত প্রশ্নের উপর ফোকাস করার জন্য আপনি সম্ভবত এটি সম্পাদনা করতে পারেন ।
মোগসদাদ

-3

নিম্নলিখিত কোড ব্যবহার করার চেষ্টা করুন:

//ASP CLASSIC
Set dbdate = Server.CreateObject("ADODB.Recordset")
dbdate.ActiveConnection = MM_connection
dbdate.Source = "SELECT NOW() AS currentserverdate "
dbdate.Open()
currentdate = dbdate.Fields("currentserverdate").Value
response.Write("Server Time is "&currentdate)
dbdate.Close()
Set dbdate = Nothing
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.