SQL ฟังก์ชัน Date
วันที่ SQL
เมื่อเราจัดการวันที่ งานที่ยากที่สุดคงเป็นการให้ความเหมาะสมกับรูปแบบวันที่ของข้อมูลที่เข้าถึงกับคอลัมน์วันที่ในฐานข้อมูล
เมื่อข้อมูลที่มีเป็นแค่ส่วนวัน การปฏิบัติการค้นหาจะไม่มีปัญหา แต่หากมีเวลาเกี่ยวข้อง สถานการณ์ก็จะมีความซับซ้อนขึ้น
ก่อนที่จะอธิบายความซับซ้อนของการค้นหาวันที่ ขอเรียกร้องให้เรามองไปที่ฟังก์ชันการจัดการวันที่ที่สำคัญที่สุดในต้นตอนนี้。
ฟังก์ชันวันที่ MySQL
ตารางด้านล่างระบุฟังก์ชันวันที่ที่สำคัญที่สุดใน MySQL:
ฟังก์ชัน | คำอธิบาย |
---|---|
NOW() | คำสั่ง RETURN วันที่และเวลาปัจจุบัน |
CURDATE() | คำสั่ง RETURN วันที่ปัจจุบัน |
CURTIME() | คำสั่ง RETURN ระยะเวลาปัจจุบัน |
DATE() | ดึงส่วนวันของวันที่หรือวันที่/เวลา |
EXTRACT() | คำสั่ง RETURN ส่วนต่างๆ ของวันที่/เวลาตามปริมาณ |
DATE_ADD() | เพิ่มช่วงเวลาที่กำหนดในวันที่ |
DATE_SUB() | ลบช่วงเวลาที่กำหนดจากวันที่ |
DATEDIFF() | คำสั่ง RETURN จำนวนวันระหว่างวันที่สองตัว |
DATE_FORMAT() | แสดงวันที่/เวลาในรูปแบบต่างๆ |
ฟังก์ชันวันที่ SQL Server
ตารางด้านล่างระบุฟังก์ชันวันที่ที่สำคัญที่สุดใน SQL Server:
ฟังก์ชัน | คำอธิบาย |
---|---|
GETDATE() | คำสั่ง RETURN วันที่และเวลาปัจจุบัน |
DATEPART() | คำสั่ง RETURN ส่วนต่างๆ ของวันที่/เวลา |
DATEADD() | เพิ่มหรือลบช่วงเวลาที่กำหนดในวันที่ |
DATEDIFF() | คำสั่ง RETURN ระหว่างวันที่สองตัว |
CONVERT() | แสดงวันที่/เวลาในรูปแบบต่างๆ |
ประเภทข้อมูล SQL Date
MySQL ใช้ประเภทข้อมูลต่อไปนี้เพื่อเก็บข้อมูลวันที่หรือวันที่/เวลาในฐานข้อมูล:
- DATE - รูปแบบ YYYY-MM-DD
- DATETIME - รูปแบบ: YYYY-MM-DD HH:MM:SS
- TIMESTAMP - รูปแบบ: YYYY-MM-DD HH:MM:SS
- YEAR - รูปแบบ YYYY หรือ YY
SQL Server ใช้ประเภทข้อมูลดังนี้เพื่อเก็บข้อมูลวันที่ หรือ วันที่/เวลาในฐานข้อมูล
- DATE - รูปแบบ YYYY-MM-DD
- DATETIME - รูปแบบ: YYYY-MM-DD HH:MM:SS
- SMALLDATETIME - รูปแบบ: YYYY-MM-DD HH:MM:SS
- TIMESTAMP - รูปแบบ: ตัวเลขเดียว
การจัดการวันที่ SQL
หากไม่มีส่วนเวลา การเปรียบเทียบวันที่จะง่ายต่อการทำงาน!
ตอนนี้เรามีตาราง "Orders" ดังนี้:
OrderId | ProductName | OrderDate |
---|---|---|
1 | computer | 2008-12-26 |
2 | printer | 2008-12-26 |
3 | electrograph | 2008-11-12 |
4 | telephone | 2008-10-19 |
ตอนนี้ เราต้องการเลือกบันทึกที่ OrderDate คือ "2008-12-26" จากตารางที่ก่อนหน้านี้
เราใช้คำสั่ง SELECT ดังนี้:
SELECT * FROM Orders WHERE OrderDate='2008-12-26'
ผลลัพธ์ตาราง:
OrderId | ProductName | OrderDate |
---|---|---|
1 | computer | 2008-12-26 |
3 | electrograph | 2008-12-26 |
ตอนนี้เราจะอนุญาติให้ "Orders" คล้ายนี้ (โปรดจำได้ว่าส่วนเวลาในคอลัมน์ "OrderDate")
OrderId | ProductName | OrderDate |
---|---|---|
1 | computer | 2008-12-26 16:23:55 |
2 | printer | 2008-12-26 10:45:26 |
3 | electrograph | 2008-11-12 14:12:08 |
4 | telephone | 2008-10-19 12:56:10 |
หากเราใช้คำสั่ง SELECT ดังนี้:
SELECT * FROM Orders WHERE OrderDate='2008-12-26'
เราจึงไม่ได้ผลลัพธ์ นี่เป็นเพราะคำสั่งค้นหาไม่มีส่วนเวลาในวันที่
คำเตือน:หากคุณต้องการที่จะทำให้คำสั่งค้นหาง่ายและง่ายต่อการดูแล โปรดไม่ใช้ส่วนเวลาในวันที่!