রুবেল অন রেলে, ডেটটাইম, টাইমস্ট্যাম্প, সময় এবং তারিখের মধ্যে পার্থক্য কী?


414

আমার অভিজ্ঞতা হিসাবে, প্রোগ্রামিং সর্বদা বিপদ এবং সংকীর্ণতায় পরিপূর্ণ যখন তারিখ / সময় ঠিক পাওয়া।

কেবলমাত্র অপ্রতিরোধ্য সংখ্যার কারণে, যদি রুবি এবং রেলগুলি আমাকে সর্বদা এটি থেকে সরিয়ে দেয়; আমার কোন ধারণা নেই যা আমার বেছে নেওয়া উচিত।

আমি যখন রেলগুলি ব্যবহার করছি এবং অ্যাক্টিভেকর্ড ডেটাটাইপগুলি দেখছি তখন আমি নীচেরটি পেতে পারি

: ডেটটাইম,: টাইমস্ট্যাম্প,: সময় এবং: তারিখ

এবং পার্থক্যগুলি কী তা বা কোথায় গোচা লুকিয়ে আছে সে সম্পর্কে কোনও ধারণা নেই।

পার্থক্য কি? আপনি তাদের জন্য কি ব্যবহার করবেন?

(পিএস আমি রেল 3 ব্যবহার করছি)

উত্তর:


572

অ্যাক্টিভেকর্ডে বিভিন্ন তারিখ / সময় ফর্ম্যাটগুলির মধ্যে পার্থক্যটির সাথে রেইলগুলি এবং আপনি যে কোনও ডাটাবেস ব্যবহার করছেন তার সাথে কিছুই করার নেই।

একটি উদাহরণ হিসাবে মাইএসকিউএল ব্যবহার (অন্য কোন কারণ কারণ এটি সবচেয়ে জনপ্রিয় জন্য হলে), আপনি DATE, DATETIME, TIMEএবং TIMESTAMPকলাম ধরনের তথ্য; আপনি ঠিক যেমন CHAR, VARCHAR, FLOATএবং INTEGER

সুতরাং, আপনি জিজ্ঞাসা, পার্থক্য কি? ঠিক আছে, তাদের মধ্যে কিছু স্ব-ব্যাখ্যামূলক। DATEকেবল একটি তারিখ সঞ্চয় করে, TIMEকেবল দিনের একটি সময় DATETIMEসঞ্চয় করে , যখন উভয়ই সঞ্চয় করে।

মধ্যে পার্থক্য DATETIMEএবং TIMESTAMPএকটি বিট আরো সূক্ষ্ম হল: DATETIMEযেমন ফর্ম্যাট করা হয়েছে YYYY-MM-DD HH:MM:SS। বৈধ রেঞ্জ বছর 9999 (এবং এর মধ্যে সব কিছু বছর 1000 থেকে যান। যদিও TIMESTAMP সৌন্দর্য অনুরূপ যখন আপনি ডাটাবেস থেকে এটা আনা, সত্যিই এটি একটি মাত্র একটি ফ্রন্ট এর UNIX টাইমস্ট্যাম্প । তার বৈধ ব্যাপ্তির 1970 থেকে 2038. পার্থক্য যায় এখানে ডাটাবেস ইঞ্জিনের বিভিন্ন বিল্ট-ইন ফাংশনগুলি বাদে স্টোরেজ স্পেস রয়েছে। কারণ DATETIMEবছর, মাসের দিন, ঘন্টা, মিনিট এবং সেকেন্ডে প্রতিটি ডিজিট সংরক্ষণ করে এটি মোট 8 বাইট ব্যবহার করে AsTIMESTAMP শুধুমাত্র সংখ্যা সঞ্চয় করে 1970-01-01 থেকে সেকেন্ডের মধ্যে এটি 4 বাইট ব্যবহার করে।

আপনি এখানে মাইএসকিউএলে সময়ের ফর্ম্যাটগুলির মধ্যে পার্থক্য সম্পর্কে আরও পড়তে পারেন

শেষের দিকে, এটি আপনার তারিখ / সময় কলামটি করতে হবে তা নেমে আসে। আপনার কি 1970 এর আগে বা 2038 এর পরে তারিখ এবং সময় সংরক্ষণ করতে হবে? ব্যবহার DATETIME। আপনার কি ডাটাবেস আকার সম্পর্কে চিন্তা করতে হবে এবং আপনি সেই সময়ের ব্যবস্থার মধ্যে রয়েছেন? ব্যবহার TIMESTAMP। আপনার কি কেবল একটি তারিখ সংরক্ষণ করা দরকার? ব্যবহার DATE। আপনার কি কেবল একটি সময় সঞ্চয় করতে হবে? ব্যবহার TIME

এই সমস্ত কিছু বলার পরে, রিয়েলগুলি আসলে আপনার জন্য এই কয়েকটি সিদ্ধান্ত নেয় । উভয় :timestampএবং :datetimeডিফল্ট করবে DATETIME, যখন :dateএবং :timeঅনুরূপ DATEএবং TIMEযথাক্রমে।

এর অর্থ হ'ল রেলের মধ্যেই আপনাকে কেবল সিদ্ধান্ত নিতে হবে যে আপনাকে তারিখ, সময় বা উভয় সংরক্ষণ করতে হবে কিনা।


7
রেকর্ডের জন্য, আমি নিখুঁত টাইমস্ট্যাম্পগুলি (ইউনিক্স) পছন্দ করি কারণ YYYY-MM-DD ফর্ম্যাটটি ব্যবহৃত সময় অঞ্চলের উপর নির্ভরশীল। সুতরাং ক্লায়েন্টটির সার্ভারের সময় অঞ্চলটি জানতে হবে এবং রূপান্তরগুলি করা দরকার। ১৯s০-এর পর থেকে পরম টাইমস্ট্যাম্পগুলিতে সমস্যা নেই।
n13

32
@ n13 ভাল পয়েন্ট, তবে সত্যই এটি রেলের কোনও সমস্যা নয়, যেহেতু এটি ডাটাবেসে ডেটটাইম সন্নিবেশ করার আগে ইউটিসিতে রূপান্তরিত করে।
ভনকনরাড

13
এটি রেল মহাবিশ্বের অন্যতম সহায়ক পোস্ট। এটি রেলের গাইডে যুক্ত করা উচিত ...
অ্যান্ড্রু

4
মাইএসকিউএল এর TIMEকলামটি কঠোরভাবে "দিনের সময়" নয়, যেহেতু এটি ঘন্টা> 24 গ্রহণ করে; এটি "অতিবাহিত সময়" হিসাবে ব্যবহারযোগ্য।
নিকগ্রিম

6
অন্যান্য ডিবিএসেও কি এটি একই? যেমন পোস্টগ্রিস?
অ্যান্ডি হেডেন 21

24
  1. : তারিখের সময় (8 বাইট)

    • স্টোরের তারিখ এবং সময় ফর্ম্যাটেড YYYY-MM-DD এইচ এইচ এম: এসএস SS
    • জন্ম_ তারিখের মতো কলামগুলির জন্য দরকারী
  2. : টাইমস্ট্যাম্প (4 বাইট)

    • 1970-01-01 সাল থেকে সেকেন্ডের সংখ্যা সঞ্চয় করে
    • আপডেটড্যাট, তৈরি_এটের মতো কলামগুলির জন্য দরকারী
  3. : তারিখ (3 বাইট)
    • স্টোরের তারিখ
  4. : সময় (3 বাইট)
    • স্টোর সময়

3
এটি টিএল এর মতো: উপরের স্বীকৃত উত্তরের ডিআর সংস্করণ
চিডোজি এননাচর

0

এখানে আমি পেয়েছি একটি দুর্দান্ত এবং সুনির্দিষ্ট ব্যাখ্যা।

TIMESTAMP রেকর্ডগুলির পরিবর্তনগুলি ট্র্যাক করতে ব্যবহৃত হত এবং রেকর্ডটি পরিবর্তিত হয়ে গেলে প্রতিবার আপডেট হয়। DATETIME নির্দিষ্ট এবং স্ট্যাটিক মান সঞ্চয় করতে ব্যবহৃত যা রেকর্ডের কোনও পরিবর্তন দ্বারা প্রভাবিত হয় না।

TIMESTAMP এছাড়াও বিভিন্ন TIME ZONE সম্পর্কিত সেটিং দ্বারা প্রভাবিত। DATETIME ধ্রুবক।

TIMESTAMP অভ্যন্তরীণভাবে কোনও বর্তমান সময় অঞ্চলটিকে স্টোরের জন্য ইউটিসিতে রূপান্তরিত করে এবং পুনরুদ্ধারের সময় পিছনে বর্তমান সময় অঞ্চলে রূপান্তর করে। DATETIME এটি করতে পারে না।

TIMESTAMP 4 বাইট এবং DATETIME 8 বাইট।

টাইমস্ট্যাম্প সমর্থিত ব্যাপ্তি: '1970-01-01 00:00:01 ′ ইউটিসি থেকে' 2038-01-19 03:14:07 ′ ইউটিসি ডেটটাইম সমর্থিত পরিসীমা: '1000-01-01 00:00:00 ′ থেকে' 9999 -12-31 23:59:59 ′

উত্স: https://www.dbrnd.com/2015/09/differences-between-datetime-and-timestamp-in-mysql/#:~:text=DATETIME%20vs%20TIMESTAMP%3A,DATETIME%20is%20constant

এছাড়াও ...

ডাটাবেসের উপর নির্ভর করে বিভিন্ন কলাম "তারিখ" প্রকার এবং সম্পর্কিত রেল মাইগ্রেশন প্রকার সহ সারণী

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