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

แปลง varchar เป็นวันที่ใน MySQL หรือไม่


คุณสามารถใช้ date_format() เพื่อแปลง varchar เป็น date ไวยากรณ์มีดังนี้ −

เลือก DATE_FORMAT(STR_TO_DATE(yourColumnName, 'yourFormatSpecifier'), 'yourDateFormatSpecifier') เป็น anyVariableName จาก yourTableName;

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

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

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

mysql> แทรกลงในค่า VarcharToDate(Created_Time) ('12/1/2559'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.14 วินาที)mysql> แทรกลงในค่า VarcharToDate (Created_Time) ('14/3/2017');แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.18 วินาที)mysql> แทรกลงในค่า VarcharToDate(Created_Time) ('15/3/2018'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.21 วินาที) mysql> แทรกลงในค่า VarcharToDate (Created_Time) ( '19/5/2554'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.18 วินาที) mysql> แทรกลงในค่า VarcharToDate (Created_Time) ('19/8/2019'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.15 วินาที) mysql> แทรก ลงในค่า VarcharToDate(Created_Time) ('21/11/2020'); สืบค้นตกลง ได้รับผลกระทบ 1 แถว (0.23 วินาที)

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

mysql> เลือก *จาก VarcharToDate;+----+--------------+| รหัส | สร้าง_เวลา |+----+--------------+| 1 | 12/1/2559 || 2 | 14/3/2017 || 3 | 15/3/2561 || 4 | 19/5/2554 || 5 | 19/8/2019 || 6 | 21/11/2020 |+----+------------+6 แถวในชุด (0.00 วินาที)

นี่คือแบบสอบถามเพื่อแปลง varchar เป็นวันที่ ขั้นแรก คุณต้องใช้ฟังก์ชัน str_to_date() เพื่อแปลงเป็นวันที่ หลังจากนั้นใช้ date_format() เพื่อระบุวันที่จริง -

mysql> เลือก date_format(str_to_date(Created_Time, '%d/%m/%Y'), '%Y-%m-%d') เป็นวันที่จาก VarcharToDate;

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

<ก่อนหน้า>+-----------+| วันที่ |+-----------+| 2016-01-12 || 2017-03-14 || 2018-03-15 || 2011-05-19 || 2019-08-19 || 2020-11-21 |+-----------+6 แถวในชุด (0.00 วินาที)