MySQL ทำงานกับวันที่
MySQL Dates
ส่วนที่ยากที่สุดในการทำงานกับวันที่คือต้องแน่ใจว่ารูปแบบของวันที่ที่คุณพยายามแทรกนั้นตรงกับรูปแบบของคอลัมน์วันที่ในฐานข้อมูล
ตราบใดที่ข้อมูลของคุณมีเพียงส่วนวันที่ การสืบค้นของคุณจะทำงานตามที่คาดไว้ อย่างไรก็ตาม หากมีส่วนของเวลา มันก็จะซับซ้อนมากขึ้น
ประเภทข้อมูลวันที่ของ MySQL
MySQL มาพร้อมกับประเภทข้อมูลต่อไปนี้สำหรับการจัดเก็บวันที่หรือค่าวันที่/เวลาในฐานข้อมูล:
-
DATE
- รูปแบบ YYYY-MM-DD -
DATETIME
- รูปแบบ: ปปปป-ดด-วว HH:MI:SS TIMESTAMP
- รูปแบบ: ปปปป-ดด-วว HH:MI:SS-
YEAR
- รูปแบบ YYYY หรือ YY
หมายเหตุ:ชนิดข้อมูลวันที่ถูกตั้งค่าสำหรับคอลัมน์เมื่อคุณสร้างตารางใหม่ในฐานข้อมูลของคุณ!
ทำงานกับ Dates
ดูตารางต่อไปนี้:
ตารางการสั่งซื้อ
OrderId | ProductName | OrderDate |
---|---|---|
1 | Geitost | 2008-11-11 |
2 | Camembert Pierrot | 2008-11-09 |
3 | Mozzarella di Giovanni | 2008-11-11 |
4 | Mascarpone Fabioli | 2008-10-29 |
ตอนนี้ เราต้องการเลือกระเบียนที่มี OrderDate เป็น "2008-11-11" จากตารางด้านบน
เราใช้SELECT
คำสั่งต่อไปนี้:
SELECT * FROM Orders WHERE OrderDate='2008-11-11'
ชุดผลลัพธ์จะมีลักษณะดังนี้:
OrderId | ProductName | OrderDate |
---|---|---|
1 | Geitost | 2008-11-11 |
3 | Mozzarella di Giovanni | 2008-11-11 |
หมายเหตุ:สามารถเปรียบเทียบวันที่สองวันได้อย่างง่ายดายหากไม่มีองค์ประกอบของเวลา!
ตอนนี้ สมมติว่าตาราง "คำสั่งซื้อ" มีลักษณะดังนี้ (สังเกตองค์ประกอบเวลาที่เพิ่มในคอลัมน์ "OrderDate"):
OrderId | ProductName | OrderDate |
---|---|---|
1 | Geitost | 2008-11-11 13:23:44 |
2 | Camembert Pierrot | 2008-11-09 15:45:21 |
3 | Mozzarella di Giovanni | 2008-11-11 11:12:01 |
4 | Mascarpone Fabioli | 2008-10-29 14:56:59 |
หากเราใช้ข้อความเดียวกันSELECT
กับข้างต้น:
SELECT * FROM Orders WHERE OrderDate='2008-11-11'
เราจะไม่ได้ผล! เนื่องจากแบบสอบถามกำลังค้นหาเฉพาะวันที่ที่ไม่มีส่วนของเวลา
เคล็ดลับ:เพื่อให้คำค้นหาของคุณเรียบง่ายและดูแลรักษาง่าย อย่าใช้องค์ประกอบเวลาในวันที่ของคุณ เว้นแต่คุณจะต้องทำ!