แยกวันที่ใน MySQL

จะแปลงสิ่งต่อไปนี้เป็นวันที่สำหรับการแทรก / อัปเดตลงในฟิลด์ TIMESTAMP หรือ DATE ใน MySQL ได้อย่างไร

'15-Dec-09'

DATE_FORMAT() ใช้เพื่อจัดรูปแบบวันที่ แต่ไม่ใช่วิธีอื่น


person Community    schedule 21.07.2010    source แหล่งที่มา


คำตอบ (2)


คุณอาจต้องการใช้ STR_TO_DATE() ฟังก์ชัน มันเป็นสิ่งที่ตรงกันข้ามของ DATE_FORMAT()< /a> ฟังก์ชัน

STR_TO_DATE(str,รูปแบบ)

นี่คือค่าผกผันของฟังก์ชัน DATE_FORMAT() ต้องใช้สตริง str และสตริงรูปแบบ format STR_TO_DATE() ส่งคืนค่า a DATETIME หากสตริงรูปแบบมีทั้งส่วนของวันที่และเวลา หรือค่า DATE หรือ TIME หากสตริงมีเพียงส่วนของวันที่หรือเวลา หากค่าวันที่ เวลา หรือวันที่และเวลาที่ดึงมาจาก str ไม่ถูกต้อง STR_TO_DATE() จะส่งกลับ NULL และแสดงคำเตือน

ตัวอย่าง:

SELECT STR_TO_DATE('15-Dec-09', '%d-%b-%y') AS date;
+------------+
| date       |
+------------+
| 2009-12-15 |
+------------+
1 row in set (0.00 sec)
person Daniel Vassallo    schedule 21.07.2010
comment
@ซันนี่: คุณเปลี่ยนคำสั่งเป็น STR_TO_DATE('6/20/2013', '%c/%d/%Y') หรือไม่? - person Fluff; 10.03.2014
comment
@Daniel ใช่แล้ว ... ฉันแก้ไขมันแล้ว ขอบคุณที่รับทราบ - person Sunny Sharma; 10.03.2014

นี่คือตารางรูปแบบ %-codes ที่ใช้ใน DATE_FORMAT() และ STR_TO_DATE().

     -----examples-for------
     1999-12-31   2000-01-02
     23:59:58.999 03:04:05      identical to
     ------------ ----------    -------------
 %a  Fri          Sun      LEFT(DAYNAME(d),3)
 %b  Dec          Jan      LEFT(MONTHNAME(d),3)
 %c  12           1             MONTH(d)            
 %D  31st         2nd           DAYOFMONTH(d)+st,nd,rd
 %d  31           02       LPAD(DAYOFMONTH(d),0,2)
 %e  31           2             DAYOFMONTH(d)     
 %f  999000       000000   LPAD(MICROSECOND(t),6,0)
 %H  23           03       LPAD(HOUR(t),2,0)
 %h  11           03
 %I  11           03
 %i  59           04       LPAD(MINUTE(t),2,0)
 %j  365          002
 %k  23           3             HOUR(t)             
 %l  11           3
 %M  December     January       MONTHNAME(d)  
 %m  12           01       LPAD(MONTH(d),2,0) 
 %p  PM           AM
 %r  11:59:58 PM  03:04:05 AM
 %S  58           05       LPAD(SECOND(t),2,0)
 %s  58           05       LPAD(SECOND(t),2,0)
 %T  23:59:58     03:04:05
 %U  52           01       LPAD(WEEK(d,0),2,0)
 %u  52           00       LPAD(WEEK(d,1),2,0)
 %V  52           01      RIGHT(YEARWEEK(d,2),2)
 %v  52           52      RIGHT(YEARWEEK(d,3),2)
 %W  Friday       Sunday        DAYNAME(d)
 %w  5            0             DAYOFWEEK(d)-1
 %X  1999         2000     LEFT(YEARWEEK(d,2),4)
 %x  1999         1999     LEFT(YEARWEEK(d,3),4)
 %Y  1999         2000          YEAR(d)   
 %y  99           00      RIGHT(YEAR(d),2)
 %%  %            %

or

%X%V 199952       200001        YEARWEEK(d,2)
%x%v 199952       199952        YEARWEEK(d,3)

อย่างไรก็ตามไม่มีรหัส % สำหรับนาทีหรือวินาทีที่ไม่มีการเติม:

     59           4             MINUTE(t)  
     58           5             SECOND(t)

ในการดำเนินการ:

 '15-Dec-09' == DATE_FORMAT('2009-12-15', '%d-%b-%y')
 '2009-12-15' == STR_TO_DATE('15-Dec-09', '%d-%b-%y')
person Bob Stein    schedule 10.06.2011