ใช้ฟังก์ชัน DATE() เพื่อดึงส่วนวันที่จากคอลัมน์ TIMESTAMP หรือ DATETIME
ตัวอย่างการใช้งาน
1. สร้างตารางมีคอลัมน์ TIMESTAMP
mysql> CREATE TABLE DemoTable (
-> CustomerName VARCHAR(100),
-> CustomerShippingDate TIMESTAMP
-> );
mysql> INSERT INTO DemoTable VALUES
('Chris', '2019-01-21'), ('David', '2019-03-01'), ('Robert', '2019-06-04');
2. ดึงวันที่อย่างเดียว
mysql> SELECT *, DATE(CustomerShippingDate) FROM DemoTable;
ผลลัพธ์
+--------------+----------------------+----------------------------+ | CustomerName | CustomerShippingDate | DATE(CustomerShippingDate) | +--------------+----------------------+----------------------------+ | Chris | 2019-01-21 00:00:00 | 2019-01-21 | | David | 2019-03-01 00:00:00 | 2019-03-01 | | Robert | 2019-06-04 00:00:00 | 2019-06-04 | +--------------+----------------------+----------------------------+
ฟังก์ชันแยกส่วนวันที่/เวลา
| ฟังก์ชัน | คืนค่า | ตัวอย่าง Input | Output |
|---|---|---|---|
DATE(dt) | Date | '2019-01-21 14:30:00' | '2019-01-21' |
TIME(dt) | Time | '2019-01-21 14:30:00' | '14:30:00' |
YEAR(dt) | Year | '2019-01-21' | 2019 |
MONTH(dt) | Month | '2019-01-21' | 1 |
DAY(dt) | Day | '2019-01-21' | 21 |
HOUR(dt) | Hour | '2019-01-21 14:30:00' | 14 |
MINUTE(dt) | Minute | '2019-01-21 14:30:00' | 30 |
SECOND(dt) | Second | '2019-01-21 14:30:00' | 0 |
คำแนะนำ: ใช้ DATE() ใน WHERE เพื่อประสิทธิภาพ
-- ใช้ Index ได้ (ถ้ามี Index บน CustomerShippingDate) WHERE CustomerShippingDate >= '2019-01-01' AND CustomerShippingDate < '2019-01-22' -- ไม่ใช้ Index ได้ WHERE DATE(CustomerShippingDate) = '2019-01-21'