วันที่ SQL
ส่วนที่ยากที่สุดเมื่อทำงานกับวันคือเพื่อให้แน่ใจว่ารูปแบบวันที่คุณกำลังพยายามที่จะแทรกตรงกับรูปแบบของคอลัมน์วันที่ในฐานข้อมูล
MySQL ฟังก์ชั่นวันที่
ตารางต่อไปนี้แสดงในตัวฟังก์ชั่นวันที่สำคัญที่สุดใน MySQL:
ฟังก์ชัน | ลักษณะ |
---|---|
NOW() | ส่งกลับวันและเวลาปัจจุบัน |
CURDATE() | ส่งกลับวันที่ปัจจุบัน |
CURTIME() | ส่งกลับเวลาปัจจุบัน |
DATE() | สารสกัดจากส่วนวันที่ของวันที่หรือวันที่ / เวลาการแสดงออก |
EXTRACT() | ผลตอบแทนที่ได้เป็นส่วนหนึ่งของวันที่ / เวลา |
DATE_ADD() | เพิ่มระยะเวลาที่กำหนดวันที่ |
DATE_SUB() | หักระยะเวลาที่กำหนดจากวันที่ |
DATEDIFF() | ส่งกลับจำนวนวันระหว่างวันที่สองวัน |
DATE_FORMAT() | วันที่แสดงข้อมูล / เวลาในรูปแบบที่แตกต่างกัน |
SQL Server ของฟังก์ชั่นวันที่
ตารางต่อไปนี้แสดงในตัวฟังก์ชั่นวันที่สำคัญที่สุดใน SQL Server:
ฟังก์ชัน | ลักษณะ |
---|---|
GETDATE() | ส่งกลับวันและเวลาปัจจุบัน |
DATEPART() | ผลตอบแทนที่ได้เป็นส่วนหนึ่งของวันที่ / เวลา |
DATEADD() | เพิ่มหรือลบระยะเวลาที่กำหนดจากวันที่ |
DATEDIFF() | ส่งกลับเวลาระหว่างวันที่สองวัน |
CONVERT() | วันที่แสดงข้อมูล / เวลาในรูปแบบที่แตกต่างกัน |
ชนิดข้อมูล SQL วัน
MySQL มาพร้อมกับชนิดข้อมูลต่อไปนี้สำหรับการจัดเก็บวันหรือวันที่มีค่าที่ / เวลาในฐานข้อมูล:
- วัน - รูปแบบ YYYY-MM-DD
- DATETIME - รูปแบบ: YYYY-MM-DD HH: MI: เอสเอส
- ลงเวลา - รูปแบบ: YYYY-MM-DD HH: MI: เอสเอส
- ปี - ปปปปปปหรือรูปแบบ
SQL Server มาพร้อมกับชนิดข้อมูลต่อไปนี้สำหรับการจัดเก็บวันหรือวันที่มีค่าที่ / เวลาในฐานข้อมูล:
- วัน - รูปแบบ YYYY-MM-DD
- DATETIME - รูปแบบ: YYYY-MM-DD HH: MI: เอสเอส
- SMALLDATETIME - รูปแบบ: YYYY-MM-DD HH: MI: เอสเอส
- ลงเวลา - รูปแบบ: จำนวนที่ไม่ซ้ำกัน
Note: ประเภทวันที่จะถูกเลือกสำหรับคอลัมน์เมื่อคุณสร้างตารางใหม่ในฐานข้อมูลของคุณ!
สำหรับภาพรวมของทุกประเภทข้อมูลที่มีอยู่ให้ไปที่สมบูรณ์ของเรา อ้างอิงชนิดข้อมูล
SQL ทำงานกับวันที่
คุณสามารถเปรียบเทียบวันที่สองวันได้อย่างง่ายดายถ้ามีองค์ประกอบเวลาไม่เกี่ยวข้อง!
สมมติเรามีดังต่อไปนี้ "Orders" ตาราง:
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 |
ตอนนี้คิดว่า "Orders" ตารางลักษณะเช่นนี้ (ทราบองค์ประกอบเวลาใน "OrderDate" คอลัมน์):
OrderId | ProductName | OrderDate |
---|---|---|
1 | Geitost | 2008-11-11 13:23:44 |
2 | Camembert Pierrot | 2008/11/09 15:45:21 |
3 | mozzarella di จิโอวานนี่ | 2008/11/11 11:12:01 |
4 | mascarpone Fabioli | 2008-10-29 14:56:59 |
ถ้าเราใช้คำสั่ง SELECT เดียวกับข้างต้น:
SELECT * FROM Orders WHERE OrderDate='2008-11-11'
เราจะไม่ได้รับผล! เพราะนี่คือแบบสอบถามที่กำลังมองหาเฉพาะสำหรับวันที่มีส่วนเวลาไม่นาน
Tip: หากคุณต้องการที่จะให้คำสั่งของคุณง่ายและง่ายต่อการรักษาไม่อนุญาตให้ส่วนประกอบเวลาในวันที่ที่คุณ!