วิธีการแปลงสตริงถึงวันที่ใน MySQL?


149

ฉันมีstringคอลัมน์ซึ่งทำหน้าที่เป็นและฉันต้องการที่จะเลือกเป็นdatedate

เป็นไปได้ไหม?

รูปแบบข้อมูลตัวอย่างของฉันจะเป็น; month/day/year->12/31/2011

คำตอบ:


258

ดังที่ได้บอกไว้ที่MySQL การใช้คอลัมน์สตริงพร้อมข้อความวันที่เป็นฟิลด์วันที่คุณสามารถทำได้

SELECT  STR_TO_DATE(yourdatefield, '%m/%d/%Y')
FROM    yourtable

คุณยังสามารถจัดการสตริงวันที่เหล่านี้ในส่วนWHEREคำสั่ง ตัวอย่างเช่น

SELECT whatever
  FROM yourtable
 WHERE STR_TO_DATE(yourdatefield, '%m/%d/%Y') > CURDATE() - INTERVAL 7 DAY

คุณสามารถจัดการเค้าโครงวันที่ / เวลาทุกชนิดได้ด้วยวิธีนี้ โปรดดูspecifiers รูปแบบสำหรับDATE_FORMAT()ฟังก์ชั่นSTR_TO_DATE()ที่จะเห็นสิ่งที่คุณสามารถใส่ลงไปในพารามิเตอร์ที่สองของ


6
ฉันคิดว่ามันควรจะเป็นช่วงเวลา 7 วันแทนที่จะเป็นวัน
Feras Odeh

1
ฉันมีคอลัมน์ถ่านเช่นรูปแบบ "dd-mmm-yyyy" ฉันจะค้นหาในรูปแบบ "dd-mm-yyyy" ได้อย่างไร
MAX

51
STR_TO_DATE('12/31/2011', '%m/%d/%Y')

วันที่ใดที่จัดเก็บเป็นรูปแบบ DD / MM / YYYY เช่น 31/11/1015
Vipul Hadiya

2
@VipulHadiya เปลี่ยนสตริงรูปแบบวันที่เป็น%d/%m/%Yเช่นนั้นSTR_TO_DATE('31/11/1015', '%d/%m/%Y')โปรดทราบว่าผลลัพธ์จะอยู่ในYYYY-MM-DDรูปแบบDATE ข้อมูล
fyrye

1
คำตอบที่เป็นโค้ดอย่างเดียวมีค่าต่ำใน StackOverflow โปรดปรับปรุงคำตอบที่ถูกต้องนี้
mickmackusa

11

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html
ใช้หน้าด้านบนเพื่ออ้างอิงฟังก์ชั่นเพิ่มเติมใน MySQL

SELECT  STR_TO_DATE(StringColumn, '%d-%b-%y')
FROM    table

พูดเช่นใช้แบบสอบถามด้านล่างเพื่อรับผลลัพธ์

SELECT STR_TO_DATE('23-feb-14', '%d-%b-%y') FROM table

สำหรับรูปแบบ String ให้ใช้ลิงค์ด้านล่าง

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format


10

นี่คืออีกสองตัวอย่าง

ในการแสดงวันเดือนและปีคุณสามารถใช้:

select STR_TO_DATE('14/02/2015', '%d/%m/%Y');

ซึ่งผลิต:

2015/02/14

หากต้องการส่งออกเวลาคุณสามารถใช้:

select STR_TO_DATE('14/02/2017 23:38:12', '%d/%m/%Y %T');

ซึ่งผลิต:

2017-02-14 23:38:12

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.