Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

วิธีแยกวันที่และเวลาจากคอลัมน์ DATETIME ใน MySQL

การแยก DATE และ TIME จาก DATETIME

MySQL มีฟังก์ชัน CAST() หรือฟังก์ชันเฉพาะทาง DATE() และ TIME() สำหรับแยกส่วนประกอบของ DATETIME

ตัวอย่าง: ตารางเก็บวันเวลา Login

mysql> create table DemoTable805(LoginDate datetime);
Query OK, 0 rows affected (0.63 sec)
mysql> insert into DemoTable805 values('2019-01-31 12:45:20');
mysql> insert into DemoTable805 values('2017-11-01 10:20:30');
mysql> insert into DemoTable805 values('2016-03-12 04:10:00');
mysql> insert into DemoTable805 values('2018-12-24 05:01:00');

วิธีที่ 1: ใช้ CAST()

mysql> select cast(LoginDate AS date), cast(LoginDate AS time) from DemoTable805;

วิธีที่ 2: ใช้ DATE() และ TIME() (แนะนำ)

mysql> select DATE(LoginDate) as LoginDate, TIME(LoginDate) as LoginTime from DemoTable805;

ผลลัพธ์ทั้งสองวิธีเหมือนกัน:

+-------------------------+-------------------------+
| cast(LoginDate AS date) | cast(LoginDate AS Time) |
+-------------------------+-------------------------+
| 2019-01-31              | 12:45:20                |
| 2017-11-01              | 10:20:30                |
| 2016-03-12              | 04:10:00                |
| 2018-12-24              | 05:01:00                |
+-------------------------+-------------------------+

การเปรียบเทียบวันที่และเวลาแยกกัน

-- หาวันที่ Login เป็นวันที่ 31 มกราคม
select * from DemoTable805 where DATE(LoginDate) = '2019-01-31';

-- หาเวลา Login ระหว่าง 10:00-12:00
select * from DemoTable805 where TIME(LoginDate) between '10:00:00' and '12:00:00';

สรุป

  • ใช้ DATE() และ TIME() สำหรับอ่านง่ายและเป็นมาตรฐาน
  • ใช้ CAST(... AS DATE) ก็ได้ แต่ verbose กว่า
  • สามารถใช้ใน WHERE clause เพื่อกรองเฉพาะวันที่หรือเวลาได้