স্ট্রিং ফরম্যাটে তারিখ ('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 ব্যবহার করুন।