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

MySQL-এ VARCHAR হিসেবে সংরক্ষিত ডেটার মাঝপথে BETWEEN সার্চ করা

VARCHAR কলামে ডেটা স্ট্রিং হিসেবে থাকলে সেটিকে ডেটে কনভার্ট করে BETWEEN সার্চ করতে STR_TO_DATE() ফাংশন ব্যবহার করুন।

সিনট্যাক্স

SELECT * FROM yourTableName 
WHERE STR_TO_DATE(LEFT(yourColumnName, LOCATE(' ', yourColumnName)), '%m/%d/%Y') 
BETWEEN 'yourDateValue1' AND 'yourDateValue2';

উদাহরণ দিয়ে বুঝি

টেবিল তৈরি করুন (VARCHAR-এ ডেট+টাইম):

mysql> CREATE TABLE SearchDateAsVarchar (
    -> Id INT NOT NULL AUTO_INCREMENT,
    -> ShippingDate VARCHAR(100),
    -> PRIMARY KEY(Id)
    -> );
Query OK, 0 rows affected (0.99 sec)

রেকর্ড ইনসার্ট করুন (US ডেট ফরম্যাট MM/DD/YYYY):

mysql> INSERT INTO SearchDateAsVarchar(ShippingDate) VALUES('6/28/2011 9:58 AM');
mysql> INSERT INTO SearchDateAsVarchar(ShippingDate) VALUES('6/18/2011 10:50:39 AM');
mysql> INSERT INTO SearchDateAsVarchar(ShippingDate) VALUES('6/22/2011 11:45:40 AM');

সকল রেকর্ড:

mysql> SELECT * FROM SearchDateAsVarchar;
+----+-----------------------+
| Id | ShippingDate          |
+----+-----------------------+
|  1 | 6/28/2011 9:58 AM     |
|  2 | 6/18/2011 10:50:39 AM |
|  3 | 6/22/2011 11:45:40 AM |
+----+-----------------------+
3 rows in set (0.00 sec)

২০১১-০৬-২০ থেকে ২০১১-০৬-২৮ পর্যন্ত সার্চ

mysql> SELECT * FROM SearchDateAsVarchar 
    -> WHERE STR_TO_DATE(LEFT(ShippingDate, LOCATE(' ', ShippingDate)), '%m/%d/%Y') 
    -> BETWEEN '2011-06-20' AND '2011-06-28';
+----+-----------------------+
| Id | ShippingDate          |
+----+-----------------------+
|  1 | 6/28/2011 9:58 AM     |
|  3 | 6/22/2011 11:45:40 AM |
+----+-----------------------+
2 rows in set (0.00 sec)

ব্যাখ্যা:

  1. LOCATE(' ', ShippingDate) - স্পেসের পজিশন বের করে (ডেট এবং টাইম আলাদা করতে)
  2. LEFT(..., LOCATE(...)) - ডেট পার্ট মাত্র নেয় (যেমন: '6/28/2011')
  3. STR_TO_DATE(..., '%m/%d/%Y') - স্ট্রিংকে ডেট টাইপে কনভার্ট করে
  4. BETWEEN '2011-06-20' AND '2011-06-28' - ডেট রেঞ্জ ফিল্টার

সুপারিশ: ডেটা VARCHAR-এ না রাখে DATE/DATETIME টাইপে স্টোর করুন - সেটি ফাস্ট, সेफ এবং ইনডেক্সযোগ্য।

  1. MySQL-এ BETWEEN ব্যবহার করে জন্মতারিখের দির্ঘতা অনুযায়ী রেকর্ড ফিল্টার করা

  2. MySQL-এ BETWEEN দিয়ে দুটি তারিখের রেঞ্জের মধ্যে সকল ডেটা বের করা

  3. MySQL-এ দুটি তারিখের মধ্যে সার্চ করা

  4. MySQL স্টোরড প্রোসিডিউরে DELETE কোয়েরি বাস্তবায়ন করা