ISO format, although common, is not used by all database systems, which can cause
problems if you move data between different systems. Moreover, people commonly like
to represent dates in other formats such as MM/DD/YY or DD-MM-CCYY. This too can be a
source of trouble, due to mismatches between human expectations of how dates should
look and how MySQL actually represents them.
A question frequently asked by newcomers to MySQL is, “How do I tell MySQL to store
dates in a specific format such as MM/DD/CCYY?” That’s the wrong question. Instead, ask,
“If I have a date in a specific format, how can I store it in MySQL’s supported format,
and vice versa?” MySQL always stores dates in ISO format, a fact with implications both
for data entry (input) and for displaying query results (output):
• For data-entry purposes, to store values that are not in ISO format, you normally
must rewrite them first. If you don’t want to rewrite them, you can store them as
strings (for example, in a CHAR column). But then you can’t operate on them as dates.
Chapter 11 covers the topic of date rewriting for data entry, and Chapter 12 discusses
checking dates to verify that they’re valid. In some cases, if your values are close to
ISO format, rewriting may not be necessary. For example, MySQL interprets the
string values 87-1-7 and 1987-1-7 and the numbers 870107 and 19870107 as the
date 1987-01-07 when storing them into a DATE column.
• For display purposes, you can rewrite dates to non-ISO formats. The DATE_FOR
MAT() function provides a lot of flexibility for changing date values into other formats
(see later in this section). You can also use functions such as YEAR() to extract
parts of dates for display (see Recipe 6.8). For additional discussion, see
Recipe 12.14.
One way to rewrite non-ISO values for date entry is to use the STR_TO_DATE() function,
which takes a string representing a temporal value and a format string that specifies the
“syntax” of the value. Within the formatting string, use special sequences of the form
%c, where c specifies which part of the date to expect. For example, %Y, %M, and %d signify
the four-digit year, the month name, and the two-digit day of the month. To insert the
รูปแบบมาตรฐาน ISO แม้ว่าทั่วไปจะไม่ใช้ระบบฐานข้อมูลซึ่งอาจทำให้เกิด
ปัญหาหากคุณย้ายข้อมูลระหว่างระบบที่แตกต่างกัน นอกจากนี้ผู้คนทั่วไปชอบ
ที่จะเป็นตัวแทนวันในรูปแบบอื่น ๆ เช่น DD / MM / YY หรือ DD-MM-Ccyy นี้ก็อาจจะเป็น
แหล่งที่มาของปัญหาเกิดจากการที่ไม่ตรงกันระหว่างความคาดหวังของมนุษย์ว่าวันที่ควร
มีลักษณะและวิธีการที่ MySQL จริงเป็นพวกเขา.
คำถามที่ถามบ่อยโดยผู้มาใหม่ไปยัง MySQL คือ "ฉันจะบอก MySQL ในการจัดเก็บวิธี
วันที่ในรูปแบบที่เฉพาะเจาะจง เช่น DD / MM / Ccyy? "นั่นเป็นคำถามที่ไม่ถูกต้อง แต่ถามว่า
"ถ้าฉันมีวันที่ในรูปแบบที่เฉพาะเจาะจงว่าฉันสามารถเก็บไว้ในรูปแบบของ MySQL สนับสนุน
และในทางกลับกัน? "MySQL เสมอเก็บวันที่ในรูปแบบ ISO, ความเป็นจริงที่มีผลกระทบทั้ง
สำหรับการป้อนข้อมูล (input) และ สำหรับการแสดงผลการค้นหา (output):
•สำหรับวัตถุประสงค์ในการป้อนข้อมูลในการจัดเก็บค่าที่ไม่ได้อยู่ในรูปแบบ ISO, ปกติคุณจะ
ต้องเขียนพวกเขาครั้งแรก หากคุณไม่ต้องการที่จะเขียนพวกเขาคุณสามารถเก็บพวกเขาเป็น
สตริง (ตัวอย่างเช่นในคอลัมน์ CHAR) แต่แล้วคุณไม่สามารถดำเนินการกับพวกเขาเป็นวันที่.
บทที่ 11 ครอบคลุมหัวข้อของวันที่เขียนใหม่สำหรับการป้อนข้อมูลและบทที่ 12 กล่าวถึง
การตรวจสอบวันที่เพื่อตรวจสอบว่าพวกเขากำลังถูกต้อง ในบางกรณีถ้าค่าของคุณอยู่ใกล้กับ
รูปแบบ ISO, เขียนอาจไม่จำเป็น ตัวอย่างเช่น MySQL ตีความ
ค่าสตริง 87-1-7 และ 1987/01/07 และหมายเลข 870107 และ 19870107 เป็น
วันที่ 1987/01/07 เมื่อเก็บไว้ในคอลัมน์วัน.
•สำหรับการแสดงผล, คุณสามารถเขียนวันที่ ให้เป็นรูปแบบที่ไม่ได้มาตรฐาน ISO DATE_FOR
MAT () ฟังก์ชันให้มีความยืดหยุ่นมากสำหรับการเปลี่ยนค่าวันที่ในรูปแบบอื่น ๆ
(ดูต่อไปในส่วนนี้) นอกจากนี้คุณยังสามารถใช้ฟังก์ชั่นเช่นปี () เพื่อดึง
ส่วนของวันที่สำหรับการแสดงผล (ดูสูตร 6.8) สำหรับการอภิปรายเพิ่มเติมให้ดู
สูตร 12.14.
วิธีการหนึ่งที่จะเขียนค่าที่ไม่ใช่ ISO สำหรับรายการวันคือการใช้ STR_TO_DATE () ฟังก์ชัน
ซึ่งใช้เวลาสตริงที่เป็นตัวแทนของค่าเวลาและรูปแบบของสตริงที่ระบุ
"ไวยากรณ์" ของมูลค่า ภายในสตริงการจัดรูปแบบให้ใช้ลำดับพิเศษของรูปแบบ
c% ที่ระบุคซึ่งเป็นส่วนหนึ่งของวันที่จะคาดหวังว่า ตัวอย่างเช่น% Y, M% และ% d หมายถึง
ปีสี่หลัก, ชื่อเดือนและวันที่สองหลักของเดือน การแทรก
การแปล กรุณารอสักครู่..
มาตรฐาน ISO รูปแบบ แม้ว่าทั่วไป ไม่ได้ใช้ระบบฐานข้อมูล ซึ่งสามารถก่อให้เกิด
ปัญหาถ้าคุณย้ายข้อมูลระหว่างระบบที่แตกต่างกัน นอกจากนี้ ผู้ที่มักชอบ
เป็นตัวแทนวันที่ในรูปแบบอื่นๆ เช่น dd / mm / yy หรือ dd-mm-ccyy . นี้ก็สามารถ
แหล่งที่มาของปัญหาได้ เนื่องจากความไม่ ระหว่างความคาดหวังของมนุษย์แล้ววันที่ควร
ดูแล้ว MySQL
จริงหมายถึงพวกเขาคำถามที่ถามบ่อยโดยผู้มาใหม่ไปยัง MySQL คือ " ฉันจะบอก MySQL เพื่อเก็บ
วันที่ในรูปแบบที่เฉพาะเจาะจงเช่น MM / DD / ccyy ? " นั่นเป็นคำถามที่ผิด แทน , ถาม ,
" ถ้าฉันมีวันที่ในรูปแบบเฉพาะ ฉันจะเก็บไว้ใน MySQL สนับสนุนรูปแบบ
และในทางกลับกัน ? " MySQL เสมอร้านค้าวันที่ในรูปแบบ ISO , ความจริงที่มีความหมายทั้ง
สำหรับการป้อนข้อมูล ( Input ) และแสดงผลข้อมูล ( Output ) :
- วัตถุประสงค์เพื่อบันทึกข้อมูล เพื่อจัดเก็บค่าที่ไม่ใช่ในรูปแบบ ISO ปกติ
ต้องเขียนไว้ก่อน ถ้าคุณไม่ต้องการที่จะเขียนพวกเขาคุณสามารถเก็บไว้เป็น
สตริง ( ตัวอย่างเช่นใน char คอลัมน์ ) แต่คุณไม่สามารถใช้พวกเขาเท่าที่วันที่
บทที่ 11 ครอบคลุมหัวข้อของวันที่ใหม่สำหรับป้อนข้อมูลบทที่ 12 การกล่าวถึง
วันที่เพื่อตรวจสอบว่าพวกเขาจะถูกต้อง ในบางกรณี ถ้าค่าของคุณจะปิด
รูปแบบ ISO , เขียนใหม่อาจไม่จําเป็น ตัวอย่างเช่น MySQL แปล
ข้อความและ 87-1-7 1987-1-7 และตัวเลขและ 870107 19870107 เป็น
วันที่ 1987-01-07 เมื่อเก็บไว้ในวันคอลัมน์ .
- เพื่อการแสดงผล คุณสามารถเขียนวันที่ไม่รูปแบบ ISOการ date_for
mat() ฟังก์ชันมีความยืดหยุ่นมากสำหรับการเปลี่ยนแปลงค่าวันที่ในรูปแบบอื่น ๆ
( ดูในภายหลัง ในส่วนนี้ ) นอกจากนี้คุณยังสามารถใช้ฟังก์ชันเช่น year() สกัด
ส่วนของวันที่แสดง ( ดูสูตรที่ 6.8 ) สำหรับการอภิปรายเพิ่มเติม เห็นสูตร 12.14
.
วิธีหนึ่งที่จะไม่เขียนค่า ISO สำหรับรายการวันที่คือการใช้ฟังก์ชัน str_to_date()
,ซึ่งจะเป็นสตริงที่เป็นตัวแทนของค่าเวลาและรูปแบบสตริงที่ระบุ
" ไวยากรณ์ " ของค่า ในการจัดรูปแบบสตริงพิเศษใช้ลำดับของรูปแบบ
% C , C ระบุส่วนของวันที่ที่คาดหวัง ตัวอย่างเช่น , % Y , % m ,
% D บ่งบอกเลขสี่ปี ชื่อเดือน ตัวเลข และสองวันของเดือน เพื่อแทรก
การแปล กรุณารอสักครู่..