Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

กำลังค้นหาระหว่างวันที่ที่จัดเก็บเป็น varchar ใน MySQL หรือไม่


คุณสามารถค้นหาระหว่างวันที่จัดเก็บเป็น varchar โดยใช้ STR_TO_DATE() ไวยากรณ์มีดังนี้ −

เลือก *จาก yourTableName โดยที่ STR_TO_DATE(LEFT(yourColumnName,LOCATE('',yourColumnName)),'%m/%d/%Y') ระหว่าง 'yourDateValue1' และ 'yourDateValue2';

เพื่อให้เข้าใจไวยากรณ์ข้างต้น ให้เราสร้างตาราง แบบสอบถามเพื่อสร้างตารางมีดังนี้ −

mysql> สร้างตาราง SearchDateAsVarchar -> ( -> Id int ไม่ใช่ NULL AUTO_INCREMENT, -> ShippingDate varchar(100), -> คีย์หลัก (Id) -> ); แบบสอบถามตกลง 0 แถวได้รับผลกระทบ (0.99 วินาที) 

แทรกบางระเบียนในตารางโดยใช้คำสั่ง INSERT แบบสอบถามมีดังนี้ −

mysql> แทรกลงในค่า SearchDateAsVarchar(ShippingDate) ('6/28/2011 09:58 AM') เคียวรีตกลง ได้รับผลกระทบ 1 แถว (0.19 วินาที)mysql> แทรกลงในค่า SearchDateAsVarchar(ShippingDate) ('6/18) /2011 10:50:39 AM');Query OK, 1 แถวได้รับผลกระทบ (0.55 วินาที)mysql> แทรกลงในค่า SearchDateAsVarchar(ShippingDate) ('6/22/2011 11:45:40 AM'); Query OK, 1 แถวได้รับผลกระทบ (0.18 วินาที)

แสดงระเบียนทั้งหมดจากตารางโดยใช้คำสั่ง select แบบสอบถามมีดังนี้ −

mysql> เลือก *จาก SearchDateAsVarchar;

ต่อไปนี้เป็นผลลัพธ์ -

<ก่อนหน้า>+----+----------------------+| รหัส | วันที่จัดส่ง |+----+----------------------+| 1 | 28/28/2011 09:58 น. || 2 | 6/18/2011 10:50:39 น. || 3 | 6/22/2011 11:45:40 น. |+----+-----------------------+3 แถวในชุด (0.00 วินาที)

นี่คือแบบสอบถามเพื่อค้นหาระหว่างวันที่จัดเก็บเป็น varchar -

mysql> เลือก *จาก SearchDateAsVarchar โดยที่STR_TO_DATE(LEFT(ShippingDate,LOCATE(' ',ShippingDate)),'%m/%d/%Y') ระหว่าง'2011-06-20' และ '2011-06-28 ';

ต่อไปนี้เป็นผลลัพธ์ -

<ก่อนหน้า>+----+----------------------+| รหัส | วันที่จัดส่ง |+----+----------------------+| 1 | 28/28/2011 09:58 น. || 3 | 6/22/2011 11:45:40 น. |+----+-----------------------+2 แถวในชุด (0.00 วินาที)