উত্তর:
DATEDIFF ফাংশন সম্পর্কে কি ?
ম্যানুয়ালটির পৃষ্ঠাটি উদ্ধৃত করা হচ্ছে:
DATEDIFF () expr1 প্রদান করে - এক তারিখ থেকে অন্য তারিখের মধ্যে এক্সপ্রেস 2 মান হিসাবে প্রকাশিত হয়। expr1 এবং expr2 হল তারিখ বা তারিখ এবং সময় এক্সপ্রেশন। গণনায় কেবলমাত্র মানগুলির তারিখের অংশগুলি ব্যবহৃত হয়
আপনার ক্ষেত্রে, আপনি ব্যবহার করতে চাই:
mysql> select datediff('2010-04-15', '2010-04-12');
+--------------------------------------+
| datediff('2010-04-15', '2010-04-12') |
+--------------------------------------+
| 3 |
+--------------------------------------+
1 row in set (0,00 sec)
তবে নোট করুন যে তারিখগুলি আপনার লেখা পোস্টের মতো YYYY-MM-DD
নয়, হিসাবে লেখা উচিত DD-MM-YYYY
।
datediff()
পদ্ধতির জন্য দ্বিতীয় যুক্তির চেয়ে বড় হওয়া উচিত , অন্যথায় এটি নেতিবাচক মানটি ফিরিয়ে দেবে।
দ্রষ্টব্য আপনি যদি ২ তারিখের মধ্যে পুরো ২৪ ঘন্টা দিন গণনা করতে চান তবে ডেটেফ আপনার পক্ষে ভুল মানগুলি ফিরিয়ে দিতে পারে।
নথি হিসাবে বলা হয়েছে:
গণনায় কেবলমাত্র মানগুলির তারিখের অংশগুলি ব্যবহৃত হয়।
যার ফলস্বরূপ
select datediff('2016-04-14 11:59:00', '2016-04-13 12:00:00')
প্রত্যাশিত 0 এর পরিবর্তে 1 প্রদান করে।
সমাধান ব্যবহার করছে select timestampdiff(DAY, '2016-04-13 11:00:01', '2016-04-14 11:00:00');
(তারিখের তুলনায় যুক্তির বিপরীত ক্রমটি নোট করুন)।
কিছু উদাহরণ:
select timestampdiff(DAY, '2016-04-13 11:00:01', '2016-04-14 11:00:00');
0 প্রদান করেselect timestampdiff(DAY, '2016-04-13 11:00:00', '2016-04-14 11:00:00');
ফেরত 1select timestampdiff(DAY, '2016-04-13 11:00:00', now());
2016-04-13 11:00:00 থেকে এখন অবধি কত পুরো 24 ঘন্টা দিন কেটে গেছে তা ফেরৎ দেয় ।আশা করি এটি কাউকে সহায়তা করবে, কারণ ডেটেডিফ অপ্রত্যাশিত বা ভুল বলে মনে হচ্ছে এমন মানগুলি কেন দেয় তা প্রথমে খুব বেশি স্পষ্ট হয় না।
datediff()
এবং এর মধ্যে প্রায় ফ্লিপ হয় timestampdiff()
।
DATEDIFF()
ফাংশনটি ব্যবহার করুন ।
ডকুমেন্টেশন থেকে উদাহরণ:
SELECT DATEDIFF('2007-12-31 23:59:59','2007-12-30');
-> 1
আমি TIMESTAMPDIFF পছন্দ করি কারণ আপনি প্রয়োজনে ইউনিটটি সহজেই পরিবর্তন করতে পারেন।
গন্তব্য তারিখ থেকে বর্তমান তারিখের মধ্যে দিন পান
SELECT DATEDIFF('2019-04-12', CURDATE()) AS days;
আউটপুট
335
SELECT md.*, DATEDIFF(md.end_date, md.start_date) AS days FROM membership_dates md
আউটপুট ::
id entity_id start_date end_date days
1 1236 2018-01-16 00:00:00 2018-08-31 00:00:00 227
2 2876 2015-06-26 00:00:00 2019-06-30 00:00:00 1465
3 3880 1990-06-05 00:00:00 2018-07-04 00:00:00 10256
4 3882 1993-07-05 00:00:00 2018-07-04 00:00:00 9130
আশা করি এটি ভবিষ্যতে কাউকে সহায়তা করবে