আমার বেশ কয়েক বছর আগেও একই রকম সমস্যা ছিল এবং আমি আবিষ্কার করতে পারি যে আমি এটি করতে পারি
ALTER DATABASE database_name SET datestyle TO "ISO, MDY";
চেষ্টা কর. (এটি আপনার সমস্ত ডাটাবেসের সমাধানের জন্য, প্রতিটি ডাটাবেসের ভিত্তিতে কাজ করে, আপনার মধ্যে এই প্যারামিটারটি সেট করুন postgresql.conf
- @a_horse_with_no_name ধন্যবাদ)
দয়া করে সচেতন হন যে ডিফল্ট সেটিংস স্থানীয়ভাবে স্বতন্ত্র নয় । তবে initdb
এটি যা যা সেট করে সেট করার পরে আপনি এটিকে নিজের মধ্যে পরিবর্তন করতে পারেন postgresql.conf
।
@ স্বশেকের মন্তব্য আমাকে সেটিংসের সাথে উল্লেখ করেছে:
test=# SHOW lc_ctype;
lc_ctype
--------------------
Hungarian, Hungary
(1 row)
test=# SHOW lc_time;
lc_time
--------------------
Hungarian, Hungary
(1 row)
সেটিংয়ের datestyle
নিম্নলিখিত প্রভাব রয়েছে:
SET datestyle TO "ISO, MDY";
SELECT current_date;
date
------------
2012-06-21
(1 row)
এখন এটি সত্যই প্রত্যাশিত নয় - এবং এটি অন্য সার্ভারেও একই রকম en_US.UTF8
। চেষ্টা করেও "ISO, DMY"
, আমাকে পরামর্শ দেয় যে আউটপুট"ISO"
উত্পাদন করার সময় অংশটি কমবেশি অন্য অংশকে ছাড়িয়ে যায় । জন্য ইনপুট মান, এটা নীচের টেবিলে সংক্ষিপ্ত যেমন, প্রত্যাশিত প্রভাব রয়েছে:
input values
'2016/01/21' '01/21/2016' '21/01/2016' output
──────────────────────────────────────────────────────────────────────
ISO, YMD OK -- -- 2016-01-21
ISO, DMY -- OK -- 2016-01-21
ISO, MDY -- -- OK 2016-01-21
- এর মানে হল যে উপরে দেওয়া ইনপুট শৈলীর ফলে প্রদত্ত datestyle
সেটিংটির জন্য একটি ত্রুটি দেখা দেয়।
ডকুমেন্টেশনটি যত্ন সহকারে পড়ার পরে, কেউ দেখতে পাবে যে datestyle
এটি আংশিক বিরোধী সেটিংসের একটি জুড়ি:
Reasonsতিহাসিক কারণে, এই পরিবর্তনশীলটিতে দুটি স্বতন্ত্র উপাদান রয়েছে: আউটপুট ফর্ম্যাট স্পেসিফিকেশন (আইএসও, পোস্টগ্রিস, এসকিউএল, বা জার্মান) এবং বছর / মাস / দিনের অর্ডারিংয়ের জন্য ইনপুট / আউটপুট স্পেসিফিকেশন (ডিএমওয়াই, এমডিওয়াই, বা ওয়াইএমডি)।
আমার জন্য এটির অর্থ হ'ল একটিকে কিছুটা পরীক্ষা-নিরীক্ষার মাধ্যমে তাদের প্রয়োজনগুলির সাথে মানানসই এক সন্ধান করতে হবে - তবে সবচেয়ে ভাল উপায় হ'ল এটিকে ডিফল্টে রেখে সর্বদা একটি দ্ব্যর্থহীন ইনপুট ফর্ম্যাট ব্যবহার করা। এর মধ্যে দুটি হ'ল 'YYYY-MM-DD'
এবং 'YYYYMMDD'
। আমি পূর্বেরটিকে পছন্দ করি - এমনকি এই আইআরএল ব্যবহার করে;)
দ্রষ্টব্য: এর থেকে datestyle
সেটিংস (এবং অন্যান্য রানটাইম সেটিংস) postgresql.conf
কোনও দ্বারা ওভাররাইড করা যায় ALTER DATABASE bla SET datestyle ...
, এটি একটি একক ডাটাবেসের জন্য স্থায়ীভাবে সেট করে দেওয়া বা SET datestyle TO ...
বর্তমান সেশনের জন্য সেট করে। এই দ্বিতীয়টি কোনও তৃতীয় পক্ষের ডেটা আলাদা তারিখের ফর্ম্যাট সহ আমদানির সময় কার্যকর হতে পারে।