การค้นหาผู้ใช้ที่ล็อกอินในวันปัจจุบัน
เมื่อต้องการดึงข้อมูลผู้ใช้ที่มีการล็อกอินในวันนี้ โดยที่ฟิลด์วันที่เก็บเป็นประเภท String (VARCHAR/TEXT) สามารถใช้ฟังก์ชัน STR_TO_DATE() แปลงสตริงเป็นวันที่ แล้วเปรียบเทียบกับ CURDATE() ซึ่งจะคืนค่าวันที่ปัจจุบันโดยไม่รวมเวลา
รูปแบบคำสั่ง (Syntax)
SELECT yourColumnName1, yourColumnName2, ...
FROM yourTableName
WHERE STR_TO_DATE(yourDateColumn, 'date_format') = CURDATE();
ตัวอย่างการใช้งาน
สมมติมีตาราง DateEqualToday เก็บข้อมูลชื่อ-นามสกุลและวันที่ล็อกอิน:
CREATE TABLE DateEqualToday (
Id INT,
First_Name VARCHAR(100),
Last_Name VARCHAR(100),
LoginDate VARCHAR(20)
);
ข้อมูลตัวอย่าง:
| Id | First_Name | Last_Name | LoginDate |
|---|---|---|---|
| 1 | James | Smith | 20-12-2018 |
| 2 | Carol | Taylor | 21-12-2017 |
| 3 | John | Smith | 21-12-2018 |
| 4 | Maria | Garcia | 22-12-2018 |
| 5 | Mike | Davis | 21-12-2018 |
| 6 | Bob | Wilson | 21-12-2018 |
คำสั่งค้นหาผู้ใช้ที่ล็อกอินวันนี้ (สมมติวันนี้คือ 21-12-2018):
SELECT Id, First_Name, LoginDate
FROM DateEqualToday
WHERE STR_TO_DATE(LoginDate, '%d-%m-%Y') = CURDATE();
ผลลัพธ์:
| Id | First_Name | LoginDate |
|---|---|---|
| 3 | John | 21-12-2018 |
| 5 | Mike | 21-12-2018 |
| 6 | Bob | 21-12-2018 |
คำอธิบาย: ฟังก์ชัน STR_TO_DATE(LoginDate, '%d-%m-%Y') จะแปลงสตริงวันที่ในรูปแบบ DD-MM-YYYY ให้เป็นค่าประเภท DATE แล้วเปรียบเทียบกับ CURDATE() ที่คืนค่าวันที่ปัจจุบันของเซิร์ฟเวอร์