পোস্টগ্রিএসকিউএল ডাটাবেসে আমি টাইমস্ট্যাম্পের ধরণটি বেছে নেব?


119

মাল্টি টাইমজোন প্রকল্পের প্রসঙ্গে আমার পোস্টগ্রিস ডাটাবেসে টাইমস্ট্যাম্পগুলি সংরক্ষণ করার জন্য আমি একটি সেরা অনুশীলনকে সংজ্ঞায়িত করতে চাই।

আমি পারি

  1. TIMESTAMP WITHOUT TIME ZONEএই ক্ষেত্রের জন্য সন্নিবেশের সময় কোন টাইমজোন ব্যবহৃত হয়েছিল তা চয়ন করুন এবং মনে রাখবেন
  2. TIMESTAMP WITHOUT TIME ZONEঅন্য ক্ষেত্রটি চয়ন করুন এবং যুক্ত করুন যা সন্নিবেশের সময় ব্যবহার করা সময় অঞ্চলটির নাম ধারণ করবে
  3. TIMESTAMP WITH TIME ZONEসেই অনুযায়ী টাইমস্ট্যাম্পগুলি চয়ন করুন এবং োকান

বিকল্প 3 (টাইম জোন সহ টাইমস্ট্যাম্প) এর জন্য আমার সামান্য পছন্দ রয়েছে তবে আমি বিষয়টি সম্পর্কে শিক্ষিত মতামত রাখতে চাই।

উত্তর:


142

প্রথমত, পোস্টগ্র্যাস এসকিউএলএর সময় পরিচালনা এবং পাটিগণিত চমত্কার এবং অপশন 3 সাধারণ ক্ষেত্রে ভাল। এটি অবশ্য সময় এবং সময় অঞ্চলগুলির একটি অসম্পূর্ণ দৃশ্য এবং পরিপূরক হতে পারে:

  1. ব্যবহারকারীর টাইম জোনের নাম ব্যবহারকারীর পছন্দ হিসাবে সংরক্ষণ করুন (যেমন America/Los_Angeles, না -0700)।
  2. ব্যবহারকারীর ইভেন্ট / সময় ডেটা স্থানীয়ভাবে তাদের রেফারেন্সের ফ্রেমে জমা দেওয়া হয়েছে (সম্ভবত ইউটিসি থেকে অফসেট, যেমন -0700)।
  3. প্রয়োগে, সময়টি রূপান্তর করুন UTCএবং একটি TIMESTAMP WITH TIME ZONEকলাম ব্যবহার করে সংরক্ষণ করুন ।
  4. রিটার্ন সময় স্থানীয়ভাবে কোনও ব্যবহারকারীর সময় অঞ্চলে অনুরোধ করে (যেমন রূপান্তরিত UTCহয় America/Los_Angeles)।
  5. আপনার ডাটাবেস এর সেট timezoneথেকে UTC

এই বিকল্পটি সর্বদা কার্যকর হয় না কারণ ব্যবহারকারীর সময় অঞ্চল পাওয়া শক্ত হতে পারে এবং তাই TIMESTAMP WITH TIME ZONEলাইটওয়েট অ্যাপ্লিকেশনগুলির জন্য হেজ পরামর্শটি । এটি বলেছিল, আমাকে এই বিকল্প 4 এর কিছু পটভূমি দিক আরও বিশদভাবে ব্যাখ্যা করতে দিন।

অপশন 3 এর মতো, এর কারণ WITH TIME ZONEহ'ল কারণ যে সময়ে কিছু ঘটেছিল তা সময়ের একটি পরম মুহূর্ত। WITHOUT TIME ZONEএকটি উৎপাদ আপেক্ষিক সময় অঞ্চল। কখনও, কখনও কখনও নিখুঁত এবং আপেক্ষিক TIMESTAMP গুলি মিশ্রিত করবেন না।

একটি প্রোগ্রাম্যাটিক এবং ধারাবাহিকতার দৃষ্টিকোণ থেকে, নিশ্চিত করুন যে সমস্ত গণনাগুলি ইউটিসিকে সময় অঞ্চল হিসাবে ব্যবহার করে তৈরি করা হয়েছে। এটি পোস্টগ্র্রেএসকিউএল প্রয়োজনীয়তা নয়, তবে অন্যান্য প্রোগ্রামিং ভাষা বা পরিবেশের সাথে সংহত করার ক্ষেত্রে এটি সহায়তা করে। CHECKটাইম স্ট্যাম্প কলামটিতে লেখার টাইম জোন অফসেট রয়েছে 0তা নিশ্চিত করার জন্য কলামটিতে একটি সেট তৈরি করা একটি প্রতিরক্ষামূলক অবস্থান যা কয়েকটি শ্রেণীর বাগগুলি প্রতিরোধ করে (যেমন স্ক্রিপ্ট কোনও ফাইলে ডেটা ফেলে দেয় এবং অন্য কোনও কিছু সময় ব্যবহার করে টাইম ডেটা বাছাই করে লেক্সিকাল সাজান)। আবার, পোস্টগ্রেএসকিউএল ডেটের গণনা সঠিকভাবে করতে বা টাইম জোনের মধ্যে রূপান্তর করার জন্য প্রয়োজন না (যেমন পোস্টগ্র্রেএসকিউএল কোনও দুটি স্বেচ্ছাসেবী সময় অঞ্চলগুলির মধ্যে সময়কে রূপান্তর করতে খুব পারদর্শী)। ডাটাবেসে প্রবেশ করা ডেটা শূন্যের অফসেট সহ সঞ্চিত থাকে তা নিশ্চিত করতে:

CREATE TABLE my_tbl (
  my_timestamp TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(),
  CHECK(EXTRACT(TIMEZONE FROM my_timestamp) = '0')
);
test=> SET timezone = 'America/Los_Angeles';
SET
test=> INSERT INTO my_tbl (my_timestamp) VALUES (NOW());
ERROR:  new row for relation "my_tbl" violates check constraint "my_tbl_my_timestamp_check"
test=> SET timezone = 'UTC';
SET
test=> INSERT INTO my_tbl (my_timestamp) VALUES (NOW());
INSERT 0 1

এটি ১০০% নিখুঁত নয়, তবে এটি একটি শক্তিশালী পর্যায়ে এন্টি-ফুটসুটুটেশন পরিমাপ সরবরাহ করে যা নিশ্চিত করে যে ডেটা ইতিমধ্যে ইউটিসিতে রূপান্তরিত হয়েছে। এটি কীভাবে করা যায় সে সম্পর্কে প্রচুর মতামত রয়েছে তবে আমার অভিজ্ঞতা থেকে অনুশীলনে এটি সেরা।

ডাটাবেস টাইম জোন হ্যান্ডলিংয়ের সমালোচনাগুলি মূলত ন্যায়সঙ্গত হয় (প্রচুর ডাটাবেস রয়েছে যা এটি দুর্দান্ত অক্ষমতার সাথে পরিচালনা করে) তবে পোস্টগ্রিসএসকিউএল টাইমস্ট্যাম্পগুলি এবং টাইমজোনগুলি পরিচালনা করা খুব দুর্দান্ত (এখানে এবং কিছু কয়েকটি "বৈশিষ্ট্য থাকা সত্ত্বেও)"। উদাহরণস্বরূপ, এই জাতীয় একটি বৈশিষ্ট্য:

-- Make sure we're all working off of the same local time zone
test=> SET timezone = 'America/Los_Angeles';
SET
test=> SELECT NOW();
              now              
-------------------------------
 2011-05-27 15:47:58.138995-07
(1 row)

test=> SELECT NOW() AT TIME ZONE 'UTC';
          timezone          
----------------------------
 2011-05-27 22:48:02.235541
(1 row)

নোট করুন যে AT TIME ZONE 'UTC'টাইম জোন সম্পর্কিত তথ্যগুলি স্ট্রিপ করে এবং TIMESTAMP WITHOUT TIME ZONEআপনার টার্গেটের রেফারেন্সের ফ্রেম ( UTC) ব্যবহার করে একটি আপেক্ষিক তৈরি করে ।

কোনও অসম্পূর্ণ থেকে একটিতে রূপান্তরিত TIMESTAMP WITHOUT TIME ZONEকরার TIMESTAMP WITH TIME ZONEসময়, অনুপস্থিত সময় অঞ্চলটি আপনার সংযোগ থেকে উত্তরাধিকার সূত্রে প্রাপ্ত:

test=> SET timezone = 'America/Los_Angeles';
SET
test=> SELECT EXTRACT(TIMEZONE_HOUR FROM NOW());
 date_part 
-----------
        -7
(1 row)
test=> SELECT EXTRACT(TIMEZONE_HOUR FROM TIMESTAMP WITH TIME ZONE '2011-05-27 22:48:02.235541');
 date_part 
-----------
        -7
(1 row)

-- Now change to UTC    
test=> SET timezone = 'UTC';
SET
-- Create an absolute time with timezone offset:
test=> SELECT NOW();
              now              
-------------------------------
 2011-05-27 22:48:40.540119+00
(1 row)

-- Creates a relative time in a given frame of reference (i.e. no offset)
test=> SELECT NOW() AT TIME ZONE 'UTC';
          timezone          
----------------------------
 2011-05-27 22:48:49.444446
(1 row)

test=> SELECT EXTRACT(TIMEZONE_HOUR FROM NOW());
 date_part 
-----------
         0
(1 row)

test=> SELECT EXTRACT(TIMEZONE_HOUR FROM TIMESTAMP WITH TIME ZONE '2011-05-27 22:48:02.235541');
 date_part 
-----------
         0
(1 row)

তলদেশের সরুরেখা:

  • কোনও ব্যবহারকারীর সময় অঞ্চলটি নামযুক্ত লেবেল হিসাবে সংরক্ষণ করুন (উদাঃ America/Los_Angeles) এবং ইউটিসি থেকে অফসেট নয় (যেমন -0700)
  • কোনও শূন্য-অফসেট সংরক্ষণ করার জন্য যদি কোন বাধ্যতামূলক কারণ না থাকে তবে সমস্ত কিছুর জন্য ইউটিসি ব্যবহার করুন
  • সমস্ত অ-শূন্য ইউটিসি বারকে ইনপুট ত্রুটি হিসাবে বিবেচনা করুন
  • আপেক্ষিক এবং নিখুঁত টাইমস্ট্যাম্পগুলিকে কখনই মেশা এবং মেলানো হবে না
  • সম্ভব হলে ডাটাবেস UTCহিসাবে ব্যবহার করুনtimezone

এলোমেলো প্রোগ্রামিং ভাষার নোট: পাইথনের datetimeডেটা টাইপ পরম বনাম আপেক্ষিক সময়ের মধ্যে পার্থক্য বজায় রাখতে খুব ভাল (যদিও আপনি এটি পাইটিজেডের মতো লাইব্রেরির সাথে পরিপূরক না করা পর্যন্ত প্রথমে হতাশ হোন )।


সম্পাদনা

আমাকে তুলনামূলক বনাম পরমটির মধ্যে পার্থক্যটি আরও কিছুটা ব্যাখ্যা করতে দিন।

কোনও ইভেন্ট রেকর্ড করতে পরম সময় ব্যবহার করা হয়। উদাহরণস্বরূপ: "ব্যবহারকারী 123 লগ ইন করেছেন" বা "স্নাতক অনুষ্ঠানগুলি ২০১০-০৫-২০১৮ পিএসটি-তে শুরু হবে।" আপনার স্থানীয় সময় অঞ্চল নির্বিশেষে, আপনি যেখানে ঘটনাটি ঘটেছে সেখানে টেলিপোর্ট করতে পারলে, আপনি ইভেন্টটি ঘটবে তা প্রত্যক্ষ করতে পারবেন। একটি ডাটাবেসে বেশিরভাগ সময় ডেটা নিখুঁত হয় (এবং তাই TIMESTAMP WITH TIME ZONEআদর্শভাবে একটি +0 অফসেট এবং নির্দিষ্ট টাইমজোন পরিচালনা করে এমন কোনও পাঠ্য লেবেল থাকা উচিত - অফসেট নয়)।

একটি আপেক্ষিক ইভেন্টটি হ'ল একটি নির্ধারিত সময় অঞ্চলের দৃষ্টিকোণ থেকে কোনও কিছুর সময় রেকর্ড করা বা সময় নির্ধারণ করা। উদাহরণস্বরূপ: "আমাদের ব্যবসায়ের দরজা সকাল ৮ টায় খোলা থাকে এবং রাত ৯ টায় বন্ধ হয়", "চলুন প্রতি সোমবার সকাল সাড়ে সাতটায় সাপ্তাহিক প্রাতঃরাশের বৈঠকের জন্য," বা "প্রতি হ্যালোইন রাত ৮ টায়।" সাধারণভাবে, ইভেন্টগুলির জন্য কোনও টেম্পলেট বা কারখানায় আপেক্ষিক সময় ব্যবহৃত হয় এবং প্রায় প্রতিটি কিছুর জন্য নিখুঁত সময় ব্যবহৃত হয়। এখানে একটি বিরল ব্যতিক্রম রয়েছে যা উল্লেখ করার মতো যা আপেক্ষিক সময়ের মান চিত্রিত করে। ভবিষ্যতের ইভেন্টগুলির জন্য যা ভবিষ্যতে যথেষ্ট পরিমাণে যেখানে নির্দিষ্ট কিছু ঘটতে পারে এমন সময় সম্পর্কে অনিশ্চয়তা থাকতে পারে, আপেক্ষিক টাইমস্ট্যাম্প ব্যবহার করুন। এখানে একটি বাস্তব বিশ্বের উদাহরণ:

ধরুন এটি ২০০৪ সাল এবং আপনার ২০০৩ সালের ৩১ শে অক্টোবর মার্কিন যুক্তরাষ্ট্রের পশ্চিম উপকূলে (অর্থাত্ ) America/Los_Angeles/ বেলা একটায় প্রসবের সময়সূচি নির্ধারণ করা দরকার PST8PDT। আপনি যদি নিখুঁত সময় ব্যবহার করে তা সঞ্চয় করে থাকেন ’2008-10-31 21:00:00.000000+00’::TIMESTAMP WITH TIME ZONEতবে ডেলিভারিটি দুপুর ২ টা নাগাদ প্রদর্শিত হত কারণ মার্কিন সরকার ২০০৩ সালের এনার্জি পলিসি আইনটি পাস করেছে যা দিবালোকের সঞ্চয়ের সময় নিয়ন্ত্রণের নিয়মকে পরিবর্তন করেছিল changed ২০০৪ সালে যখন ডেলিভারিটি নির্ধারিত ছিল, তারিখটি 10-31-2008প্যাসিফিক স্ট্যান্ডার্ড সময় ( +8000) হত , তবে ২০০৫ সাল থেকে শুরু করে ++ টাইমজোন ডাটাবেসগুলি স্বীকৃত যে 10-31-2008প্যাসিফিক ডাইটলাইট সেভিংস সময় হত (+0700)। সময় অঞ্চলটির সাথে আপেক্ষিক টাইমস্ট্যাম্প সংরক্ষণের ফলে সঠিক প্রসবের সময়সূচী হত কারণ একটি আপেক্ষিক টাইমস্ট্যাম্প কংগ্রেসের অসতর্কিত ছন্দবদ্ধতার জন্য সুরক্ষিত। জিনিস নির্ধারণের জন্য আপেক্ষিক বনাম পরম সময় ব্যবহারের মধ্যে কাটফফ যেখানে একটি অস্পষ্ট লাইন, তবে আমার থাম্বের নিয়মটি হল যে ভবিষ্যতে 3-6 মিমি এর চেয়ে বেশি যে কোনও কিছুর জন্য সময়সূচী আপেক্ষিক টাইমস্ট্যাম্প ব্যবহার করা উচিত (নির্ধারিত = পরম বনাম পরিকল্পিত = আপেক্ষিক ???)।

অন্যান্য / শেষ প্রকারের আপেক্ষিক সময় হ'ল INTERVAL। উদাহরণ: "কোনও ব্যবহারকারী লগ ইন করার 20 মিনিটের পরে সেশনটি শেষ হবে"। একটি INTERVALযথার্থ টাইমস্ট্যাম্প ( TIMESTAMP WITH TIME ZONE) বা আপেক্ষিক টাইমস্ট্যাম্পস ( TIMESTAMP WITHOUT TIME ZONE) এর সাথে সঠিকভাবে ব্যবহার করা যেতে পারে । এটি বলাও সমানভাবে সঠিক, "একটি ব্যবহারকারীর সেশনটি সফল লগইনের পরে 20 মিনিটের মেয়াদ শেষ করে (লগইন_ট্যাক + সেশন_দূতীকরণ)" বা "আমাদের সকালের প্রাতঃরাশের বৈঠকটি কেবল 60 মিনিট ধরে চলতে পারে (পুনরাবৃত্তি_ স্টার্ট_টাইম + সভা_ দৈর্ঘ্য)"।

বিভ্রান্তির শেষ বিট: DATE, TIME, TIME WITHOUT TIME ZONEএবং TIME WITH TIME ZONEসব আপেক্ষিক ধরনের তথ্য আছে। উদাহরণস্বরূপ: '2011-05-28'::DATEএকটি আপেক্ষিক তারিখ উপস্থাপন করে যেহেতু আপনার কাছে সময় অঞ্চল সম্পর্কিত কোনও তথ্য নেই যা মধ্যরাত শনাক্ত করতে ব্যবহৃত হতে পারে। একইভাবে, '23:23:59'::TIMEআপেক্ষিক কারণ আপনি সময় অঞ্চল বা DATEসময় দ্বারা প্রতিনিধিত্ব করে না জানেন । এমনকি '23:59:59-07'::TIME WITH TIME ZONE, আপনি জানেন না কী DATEহবে। এবং সবশেষে, DATEসময় অঞ্চলটি আসলে একটি নয় DATE, এটি একটি TIMESTAMP WITH TIME ZONE:

test=> SET timezone = 'America/Los_Angeles';
SET
test=> SELECT '2011-05-11'::DATE AT TIME ZONE 'UTC';
      timezone       
---------------------
 2011-05-11 07:00:00
(1 row)

test=> SET timezone = 'UTC';
SET
test=> SELECT '2011-05-11'::DATE AT TIME ZONE 'UTC';
      timezone       
---------------------
 2011-05-11 00:00:00
(1 row)

ডাটাবেসগুলিতে তারিখ এবং সময় অঞ্চল স্থাপন একটি ভাল জিনিস, তবে সূক্ষ্মভাবে ভুল ফলাফল পাওয়া সহজ। সঠিকভাবে এবং সম্পূর্ণরূপে তথ্য সংরক্ষণ করার জন্য ন্যূনতম অতিরিক্ত প্রচেষ্টা প্রয়োজন, তবে এর অর্থ এই নয় যে অতিরিক্ত প্রচেষ্টা সর্বদা প্রয়োজন।


2
আপনি যদি পোস্টগ্রেস্কলকে সঠিকভাবে ব্যবহারকারীর টাইমস্ট্যাম্পটি সঠিক সময় বলতে চান তবে পোস্টগ্রেস্কল পর্দার আড়ালে ভারী উত্তোলন করবে। এটিকে নিজেকে রূপান্তর করা কেবল bণ গ্রহণের সমস্যা।
শেঠ রবার্টসন

1
@ শিয়ান - আপনার চেকের সীমাবদ্ধতার সাথে আপনি কীভাবে বিনা টমস্ট্যাম্প inোকান set timezone to 'UTC'? আপনি জানেন যে সমস্ত টাইমজোন-সচেতন তারিখগুলি ইউটিসিতে অভ্যন্তরীণভাবে সংরক্ষণ করা হয় ?

2
চেকের পয়েন্টটি ইউটিসি থেকে জিরো অফসেটের সাথে ডেটা সংরক্ষণ করা হয়েছে তা নিশ্চিত করা। অ-শূন্য অফসেটের সাথে তথ্য বাছাই এবং পুনরুদ্ধার এবং সময়ের তুলনা ত্রুটি প্রবণ। একটি শূন্য ইউটিসি অফসেট প্রয়োগ করে, আপনি নিয়মিতভাবে একক দৃষ্টিকোণ থেকে প্রায় শূন্য-ঝুঁকিপূর্ণ উপায়ে ইন্টারফেস করতে পারবেন যা সমস্ত পরিস্থিতিতে দৃict়ভাবে আচরণ করে। যদি টাইমস্ট্যাম্পগুলির জন্য টাইমজোনগুলির পাঠ্য উপস্থাপনাকে সমর্থন করার জন্য ব্যবহারিক হয়, তবে বিষয় সম্পর্কে আমার চিন্তাভাবনা আলাদা হবে। : ~]
شان

6
@ শিয়ান: তবে, জ্যাক ইঙ্গিত করে যে সমস্ত টাইমজোন-সচেতন টাইমস্ট্যাম্পগুলি মূলত ইউটিসি-তে অভ্যন্তরীণভাবে সংরক্ষণ করা হয় এবং যখন ব্যবহৃত হয় তখন আপনার স্থানীয় সময় অঞ্চলে রূপান্তরিত হয়; কার্যকরভাবে, এক্সট্রাক্ট (এর কাছ থেকে টাইমজোন ...) তারপরে সর্বদা সংযোগের স্থানীয় সময় অঞ্চল যা যা ফিরে আসবে: টাইমস্ট্যাম্পটি কীভাবে "সঞ্চিত" ছিল তার সাথে এর কোনও সম্পর্ক নেই। অন্যভাবে বলতে গেলে, সময় অঞ্চলটি এ ধরণের কোনও অংশ নয়, এবং এটি সংরক্ষণ করা যায় না: "টাইম জোনের সাথে" "অন্য ধরণের সাথে মিথস্ক্রিয়া করার সময় কীভাবে ডেটা রূপান্তরিত হবে তার একটি সম্পত্তি। এর মাধ্যমে ডেটাটিতে পাঠ্য বা অন্যথায় টাইমজোনগুলির কোনও উপস্থাপনা নেই।
জে ফ্রিম্যান -সৌরিক-

@ জেফ্রিমান-সৌরিক-: আপনি একেবারে সঠিক। সম্ভবত 'ডগি কোড থেকে রক্ষা করার জন্য' 'চেক ()' 'পাদদেশ বিরোধী ব্যবস্থা হিসাবে রয়েছে। ডেটা লেখার ক্ষেত্রে ইউটিসি হ'ল তা নিশ্চিতকরণের মাধ্যমে কোডটি ভাবা হয়েছিল বা সম্পাদন পরিবেশটি সঠিকভাবে সেটআপ হয়েছে এমন একটি গ্যারান্টি গ্যারান্টি সরবরাহ করে।
শন

58

শানের উত্তর অত্যধিক জটিল এবং বিভ্রান্তিকর।

আসল বিষয়টি হ'ল "উইট টাইম জোন" এবং "উইটহট টাইম জোন" উভয়ই ইউনিক্সের মতো পরম ইউটিসি টাইমস্ট্যাম্প হিসাবে মান সংরক্ষণ করে। টাইমস্ট্যাম্পটি কীভাবে প্রদর্শিত হয় তার মধ্যে পার্থক্য। যখন "সময় অঞ্চল সহ" তখন প্রদর্শিত মান হ'ল ইউটিসি সঞ্চিত মানটি ব্যবহারকারীর জোনে অনুবাদ করা হয়। "টাইম জোন ছাড়াই" যখন ইউটিসি সঞ্চিত মানটি মোচড় দেওয়া হয় যাতে একই ঘড়ির মুখটি ব্যবহারকারী কোনও অঞ্চল নির্ধারণ না করেই দেখাতে পারে।

একমাত্র পরিস্থিতি যেখানে "সময় ব্যতীত অঞ্চল" ব্যবহারযোগ্য, যখন আসল অঞ্চল নির্বিশেষে একটি ঘড়ির মুখের মান প্রযোজ্য। উদাহরণস্বরূপ, যখন কোনও টাইমস্ট্যাম্প ইঙ্গিত দেয় যখন ভোটকেন্দ্রগুলি বন্ধ হতে পারে (অর্থাত্ তারা কোনও ব্যক্তির টাইমজোন নির্বিশেষে 20:00 এ বন্ধ হয়)।

পছন্দটি ব্যবহার করুন ৩. যদি না করার একটি খুব নির্দিষ্ট কারণ না থাকে তবে সর্বদা "টাইম জোনের সাথে" ব্যবহার করুন।


10
একজন প্রধান পোস্টগ্রিজ বিশেষজ্ঞ ডেভিড ই হুইলার তাঁর পোস্টিং অনুসারে আপনার মূল্যায়নের সাথে একমত হবেন, সর্বদা টাইম জোনের সাথে টাইমস্ট্যাম্প ব্যবহার করুন
তুলসী বাউরক

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

5

আমার পছন্দটি 3 বিকল্পের দিকে, কারণ পোস্টগ্রিস তারপরে আপনার জন্য টাইমজোন সম্পর্কিত টাইমস্ট্যাম্পগুলি পুনরায় গণনা করতে পারে, অন্য দু'জনের সাথে আপনাকে নিজেরাই এটি করতে হবে। টাইমস্টোন দিয়ে টাইমস্ট্যাম্প সংরক্ষণ করার অতিরিক্ত স্টোরেজ ওভারহেড সত্যিই নগন্য unless যদি না আপনি লক্ষ লক্ষ রেকর্ডের কথা বলছেন, সেক্ষেত্রে আপনার সম্ভবত ইতিমধ্যে সুন্দর মাংসপুরি সংগ্রহের প্রয়োজনীয়তা রয়েছে।


19
ত্রুটিপূর্ণ. কোনও ওভারহেড নেই ... পোস্টগ্রিস সময় অঞ্চলটি সঞ্চয় করে না ('অফসেট' সঠিক শব্দটি নয়, সময় অঞ্চল নয়, উপায় হিসাবে)। TIMESTAMP WITH TIME ZONEনাম বিভ্রান্তিকর করা হয়। এর সত্যিকার অর্থে "সন্নিবেশ / আপডেট করার সময় নির্দিষ্ট করা কোনও অফসেটের প্রতি মনোযোগ দিন এবং সেই অফসেটটি ইউটিসি-তে তারিখের সময়টি সামঞ্জস্য করতে ব্যবহার করুন"। TIMESTAMP WITHOUT TIME ZONEনামের অর্থ "এড়িয়ে কোনো অফসেট যে সন্নিবেশ / আপডেট সময় উপস্থিত হতে পারে, সমন্বয় জন্য কোন প্রয়োজন সঙ্গে ইউটিসি হচ্ছে হিসাবে তারিখ এবং সময় অংশ বিবেচনা"। সাবধানে ডক পড়ুন ।
তুলিল বাউরক

1
@ বাসিলবার্ক এই তথ্যের জন্য আপনাকে ধন্যবাদ। অবিশ্বাস্যভাবে দরকারী। অন্যদের জন্য ডকটি থেকে এই লাইনটি পড়ার জন্য বলা হয়েছে, "আক্ষরিক ক্ষেত্রে যে সময় অঞ্চল ছাড়াই টাইমস্ট্যাম্প হিসাবে নির্ধারিত হয়েছে, পোস্টগ্রাইএসকিউএল কোনও সময় অঞ্চল ইঙ্গিতটি নিঃশব্দে উপেক্ষা করবে। এটি, ফলস্বরূপ মানটি তারিখ / সময় ক্ষেত্রগুলি থেকে প্রাপ্ত ইনপুট মান, এবং সময় অঞ্চলের জন্য সামঞ্জস্য করা হয় না ""
আইদন রসউড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.