কম্পিউটার টিউটোরিয়াল

MySQL স্ট্রিং হিসেবে তারিখের সাথে গাণিতিক অপারেশন (+, -, *, /)

স্ট্রিং ফরম্যাটে তারিখ ('2017-10-17') এর সাথে গাণিতিক অপারেশন করলে MySQL শুধু স্ট্রিংয়ের প্রথম সংখ্যাগুলো নিয়ে অপ্রত্যাশিত ফলাফল দেয়।

উদাহরণ

mysql> SELECT '2017-10-17' + 20;
+-------------------+
| '2017-10-17' + 20 |
+-------------------+
| 2037              |  -- 2017 + 20 = 2037 (শুধু 2017 নেয়)
+-------------------+

mysql> SELECT '2017-10-25' - 17;
+-------------------+
| '2017-10-25' - 17 |
+-------------------+
| 2000              |  -- 2017 - 17 = 2000
+-------------------+

mysql> SELECT '2017-10-17' * 2;
+-------------------+
| '2017-10-17' * 2  |
+-------------------+
| 4034              |  -- 2017 * 2 = 4034
+-------------------+

mysql> SELECT '2017-05-25' / 5;
+----------------+
| '2017-05-25'/5 |
+----------------+
| 403.4          |  -- 2017 / 5 = 403.4
+----------------+

কারণ

  • MySQL স্ট্রিংকে নম্বরিক কন্টেক্সটে ব্যবহার করলে স্ট্রিংয়ের শুরু থেকে সংখ্যা পার্স করে (এখানে 2017)।
  • নন-নম্বরিক ক্যারেক্টার (-) পাওয়া যাওয়ায় পার্সিং থেমে যায়।
  • ফলাফলটি অপ্রত্যাশিত এবং মিনিংফুল নয়।

সতর্কতা

স্ট্রিং তারিখের সাথে গাণিতিক অপারেশন কখনো করবেন না। সর্বদা DATE/DATETIME টাইপ বা INTERVAL ব্যবহার করুন।

  1. MySQL-এ SUBSTRING_INDEX() ব্যবহার করে স্ট্রিং থেকে তারিখ এক্সট্র্যাক্ট করুন

  2. MySQL-এ BEFORE INSERT TRIGGER ব্যবহার করে অটোমেটিক্যালি বর্তমান তারিখ ইনসার্ট করুন

  3. MySQL-এ UPDATE স্টেটমেন্টে AND লজিক্যাল অপারেটর ব্যবহার

  4. MySQL에서 CAST로 나눗셈 정밀도 높이기 (소수점 20자리까지)