স্থায়ীভাবে "এমডিওয়াই" হিসাবে তারিখটি দেখতে পোস্টগ্রেস্কেল ডাটাবেস কীভাবে সেট করবেন


22

আমি কীভাবে আমার ডেটাবেসকে 'এমডিওয়াই' হিসাবে চালাবার ছাড়াই 'ডেটা' দেখতে পারি:

SET datestyle = "ISO, MDY";

প্রতিবার আমি এটি অ্যাক্সেস করার চেষ্টা করছি? আমি Postgresql সংস্করণ 9.1, উবুন্টু 12.04 ব্যবহার করছি। আমার সিস্টেম লোকাল, ডেটাবেস ইনস্টলেশন করার সময় সেট করা হয়েছিল en_CA.utf8এবং আমি সম্প্রতি এটিতে পরিবর্তন করেছি en_US.utf8

show lc_CTYPE

রিটার্ন: -> "en_CA.UTF-8"

কিন্তু

show LC_CoLLATE

রিটার্ন: -> "en_CA.UTF-8"

উত্তর:


32

আমার বেশ কয়েক বছর আগেও একই রকম সমস্যা ছিল এবং আমি আবিষ্কার করতে পারি যে আমি এটি করতে পারি

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 ...বর্তমান সেশনের জন্য সেট করে। এই দ্বিতীয়টি কোনও তৃতীয় পক্ষের ডেটা আলাদা তারিখের ফর্ম্যাট সহ আমদানির সময় কার্যকর হতে পারে।


3

ধন্যবাদ @ এ_হর্স_বিহীন_নাম_নাম | @ ডেজো | @ ypercubeᵀᴹ

আমি প্রয়োগ করতে সহজ thats সহজ লিখতে চান : পদক্ষেপ

ওয়ে 1 : কেবলমাত্র ডেটাবেসগুলিতে ডেটিংস্টাইল সেট করা

  1. show datestyle;আপনাকে বর্তমান তারিখ শৈলী "আইএসও, ডিএমওয়াই " বা "আইএসও, এমডিওয়াই" দেখায়

  2. এখন কি postgres চান তার উপর নির্ভর করে DMY বা mdy ক্যোয়ারী নিচে সেট

    ALTER DATABASE "my_database_name" SET datestyle TO "ISO, DMY";

    অথবা

    ALTER DATABASE "my_database_name" SET datestyle TO "ISO, MDY";

  3. সর্বাধিক গুরুত্বপূর্ণ পদক্ষেপ: সর্বদা ডেটস্টাইল সেট করার পরে পোস্টগ্রাস পুনরায় আরম্ভ হয়

    sudo service postgresql restart

    অথবা

    sudo /etc/init.d/postgresql restart

  4. পরীক্ষা কনফিগারেশন দেয়

    আপনি যদি নীচে ডিএমওয়াই সেট করে থাকেন তবে আপনার জন্য ক্যোয়ারীটি কাজ করা উচিত

    অনুসন্ধান: select '20/12/2016'::date আউটপুট: "2016-12-20"

    অথবা

    আপনি যদি MDY সেট করে থাকেন তবে আপনার কাছে ক্যোয়ারীটি কাজ করা উচিত

    অনুসন্ধান: select '12/19/2016'::date আউটপুট: "2016-12-19"

উপায় 2 : স্থায়ীভাবে: আপনি কনফিগ ফাইলে যা কিছু সেট করেন তা ভবিষ্যতে আপনার তৈরি করা সমস্ত ডেটাবেজে সেট করা হবে

  1. /Etc/postgresql/9.3/main/postgresql.conf সেট এ

    datestyle = 'iso, dmy' অথবা datestyle = 'iso, mdy'

  2. সর্বাধিক গুরুত্বপূর্ণ পদক্ষেপ: সর্বদা ডেটস্টাইল সেট করার পরে পোস্টগ্রাস পুনরায় আরম্ভ হয়

    sudo service postgresql restart

    অথবা

    sudo /etc/init.d/postgresql restart

  3. পরীক্ষা কনফিগারেশন দেয়

    আপনি যদি নীচে ডিএমওয়াই সেট করে থাকেন তবে আপনার জন্য ক্যোয়ারীটি কাজ করা উচিত

    অনুসন্ধান: select '20/12/2016'::date আউটপুট: "2016-12-20"

    অথবা

    আপনি যদি MDY সেট করে থাকেন তবে আপনার কাছে ক্যোয়ারীটি কাজ করা উচিত

    অনুসন্ধান: select '12/19/2016'::date আউটপুট: "2016-12-19"

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.