CodeGym/Java Course/All lectures for BN purposes/তারিখ ফাংশন, ব্যবহারিক উদাহরণ

তারিখ ফাংশন, ব্যবহারিক উদাহরণ

বিদ্যমান

গত 30 দিনের ইভেন্ট খুঁজছেন

আরেকটি সাধারণ কাজ হল সারিগুলি অনুসন্ধান করা যা একটি নির্দিষ্ট তারিখ সীমার অন্তর্গত। নীতিগতভাবে, যদি পরিসরের শুরু এবং শেষের তারিখগুলি স্থির করা হয় তবে এটি কঠিন নয়: এসকিউএল তারিখের পাশাপাশি সংখ্যার তুলনা করতে পারে।

তুলনা অপারেটরগুলি তারিখগুলিতে প্রয়োগ করা যেতে পারে: < , > , <= , ইত্যাদি৷ উপরন্তু, একটি বিশেষ অপারেটর রয়েছে যা তারিখগুলির সাথেও কাজ করতে পারে৷ উদাহরণস্বরূপ, আসুন একটি ক্যোয়ারী লিখি যা 2022 সালের গ্রীষ্মে করা প্রয়োজন টাস্ক টেবিল থেকে সমস্ত কাজ নির্বাচন করবে। অনুরোধ এই মত দেখাবে:

SELECT * FROM task  
WHERE task.deadline BETWEEN '2022-06-01' AND '2022-08-31'

এই প্রশ্নের ফলাফল হবে:

আইডি emploee_id নাম শেষ তারিখ
1 1 ফ্রন্টএন্ডে একটি বাগ ঠিক করুন 2022-06-01
2 2 ব্যাকএন্ডে একটি বাগ ঠিক করুন 2022-06-15
3 5 কফি কিনুন 2022-07-01
4 5 কফি কিনুন 2022-08-01

কিন্তু অনুরোধে কী লিখতে হবে যদি আমরা কাজ পেতে চাই, উদাহরণস্বরূপ, গত 30 দিনের জন্য। যেখানে শেষ 30 দিন সরাসরি ক্যোয়ারী এক্সিকিউশন সময়ের সাথে যুক্ত। অর্থাৎ, যদি কোয়েরিটি 25 জুলাই কার্যকর করা হয়, তাহলে আপনাকে 25 জুন থেকে 24 জুলাই পর্যন্ত তারিখ নির্বাচন করতে হবে। বর্তমান সময়ের সাথে একটি তারিখ পরিসর কিভাবে আবদ্ধ করবেন?

এটি করার জন্য, তারিখ যোগ ফাংশন ব্যবহার করুন:

DATE_ADD (date, INTERVAL expression units)

আমি মনে করি কয়েকটি উদাহরণ দিয়ে ব্যাখ্যা করা সহজ হবে:

# অনুরোধ ফলাফল
1 DATE_ADD('2022-06-04', ইন্টারভাল 5 দিন) 2022-06-09
2 DATE_ADD('2022-06-04', ইন্টারভাল 4 সপ্তাহ) 2022-07-02
3 DATE_ADD('2022-06-04', ব্যবধান 2 মাস) 2022-08-04
4
5 DATE_SUB('2022-06-04', ইন্টারভাল 5 দিন) 2022-05-30
6 DATE_SUB('2022-06-04', ইন্টারভাল 4 সপ্তাহ) 2022-05-07
7 DATE_SUB('2022-06-04', ব্যবধান 2 মাস) 2022-04-04

যাইহোক, একটি নির্দিষ্ট তারিখ থেকে নির্দিষ্ট সংখ্যক দিন, সপ্তাহ, মাস এবং বছরগুলিও বিয়োগ করা যেতে পারে।

এবং যদি আমরা আমাদের অনুরোধে ফিরে আসি - গত 30 দিনের ডেটা পেতে, তাহলে আমাদের এই পরিসরে দুটি তারিখ দরকার:

  • CURDATE() - পরিসরের শেষ
  • DATE_SUB( CURDATE() , INTERVAL 30 DAY) - পরিসরের শুরু

অনুরোধ এই মত দেখাবে:

SELECT * FROM task WHERE task.deadline  
BETWEEN DATE_SUB( CURDATE() , INTERVAL 30 DAY) AND CURDATE() 

এই প্রশ্নের ফলাফল এরকম হবে (আমার কাছে আজ 4 জুন, 2022 আছে):

আইডি emploee_id নাম শেষ তারিখ
1 1 ফ্রন্টএন্ডে একটি বাগ ঠিক করুন 2022-06-01

কিভাবে দুই তারিখের মধ্যে পার্থক্য খুঁজে বের করবেন

এবং আরেকটি দরকারী বৈশিষ্ট্য। কখনও কখনও আপনাকে দিনে দুটি তারিখের মধ্যে পার্থক্য গণনা করতে হতে পারে। এটি করার জন্য, এসকিউএল একটি বিশেষ ফাংশন আছে - DATEDIFF ()।

তার সাথে কাজ করা খুব সহজ:

DATEDIFF (date 1, date 2)

দ্বিতীয় তারিখটি প্রথম তারিখ থেকে সহজভাবে বিয়োগ করা হয়। যদি date2 তারিখ 1 এর পরে আসে, তাহলে ফলাফল নেতিবাচক হবে।

যাইহোক, আমরা DATEDIFF() ফাংশন ব্যবহার করে আমাদের আগের প্রশ্নটি পুনরায় লিখতে পারি। আমাদের টাস্ক টেবিল থেকে সমস্ত কাজ নির্বাচন করতে হবে যার সময়সীমা বর্তমান তারিখ থেকে 30 দিনের বেশি নয়। এই অনুরোধটি দেখতে কেমন হবে:

SELECT * FROM task WHERE DATEDIFF(task.deadline, CURDATE() ) < 30

এই প্রশ্নের ফলাফল এরকম হবে (আমার কাছে আজ 4 জুন, 2022 আছে):

আইডি emploee_id নাম শেষ তারিখ
1 1 ফ্রন্টএন্ডে একটি বাগ ঠিক করুন 2022-06-01
2 2 ব্যাকএন্ডে একটি বাগ ঠিক করুন 2022-06-15
3 5 কফি কিনুন 2022-07-01

এই সময়, এসকিউএল তিনটি সারি হিসাবে অনেক খুঁজে পাওয়া গেছে. ভেবে দেখুন গতবার কেন এক লাইন ছিল, আর এবার তিনটি কেন?

মন্তব্য
  • জনপ্রিয়
  • নতুন
  • পুরানো
মন্তব্য লেখার জন্য তোমাকে অবশ্যই সাইন ইন করতে হবে
এই পাতায় এখনও কোনো মন্তব্য নেই