Để xử lý và truy vấn dữ liệu ngày tháng và thời gian, bạn sẽ cần làm việc với các kiểu dữ liệu date/time trong SQL. Nếu bạn mới tìm hiểu về SQL và đang gặp khó khăn khi thao tác với kiểu định dạng ngày tháng, thì hãy tìm hiểu ngay hàm DATE trong SQL cùng Gitiho bạn nhé.
Trong quá trình xử lý dữ liệu liên quan đến ngày tháng, bạn có thể gặp phải khó khăn như không chèn được dữ liệu ngày tháng vào bảng vì sai định dạng ngày tháng. Hay bạn muốn trích xuất dữ liệu ngày tháng theo định dạng mong muốn từ cơ sở dữ liệu.
Để làm được điều đó, hãy xem các hàm xử lý ngày tháng sau trong SQL nhé.
Hàm | Mô tả | Ví dụ |
ADDDATE() | Cộng thêm số ngày vào một ngày nhất định. | SELECT ADDDATE('2024-09-01', INTERVAL 5 DAY); => '2024-09-06' |
ADDTIME() | Cộng thêm thời gian (giờ, phút, giây) vào một giá trị thời gian. | SELECT ADDTIME('12:00:00', '02:30:00'); => '14:30:00' |
CURDATE() | Lấy ngày hiện tại (không có thời gian). | SELECT CURDATE(); => '2024-09-10' |
CURRENT_DATE() | Tương tự CURDATE(), trả về ngày hiện tại. | SELECT CURRENT_DATE(); => '2024-09-10' |
CONVERT_TZ() | Chuyển đổi múi giờ cho một giá trị thời gian. | SELECT CONVERT_TZ('2024-09-01 12:00:00', 'UTC', 'Asia/Ho_Chi_Minh'); => '2024-09-01 19:00:00' |
CURRENT_TIME() | Trả về thời gian hiện tại (không có ngày). | SELECT CURRENT_TIME(); => '14:30:00' |
CURRENT_TIMESTAMP() | Trả về ngày và giờ hiện tại. | SELECT CURRENT_TIMESTAMP(); => '2024-09-10 14:30:00' |
CURTIME() | Trả về thời gian hiện tại (giống CURRENT_TIME()). | SELECT CURTIME(); => '14:30:00' |
DATE() | Trích xuất phần ngày từ một giá trị ngày giờ. | SELECT DATE('2024-09-10 14:30:00'); => '2024-09-10' |
DATEDIFF() | Tính số ngày giữa hai ngày. | SELECT DATEDIFF('2024-09-10', '2024-09-01'); => 9 |
DAY() | Trả về ngày trong tháng từ một giá trị ngày. | SELECT DAY('2024-09-10'); => 10 |
DATE_ADD() | Thêm một khoảng thời gian vào ngày. | SELECT DATE_ADD('2024-09-01', INTERVAL 5 DAY); => '2024-09-06' |
DATE_FORMAT() | Định dạng ngày theo mẫu. | SELECT DATE_FORMAT('2024-09-10', '%d-%m-%Y'); => '10-09-2024' |
DATE_SUB() | hàm trừ ngày tháng trong SQL dùng để trừ một khoảng thời gian từ ngày bất kỳ. | SELECT DATE_SUB('2024-09-10', INTERVAL 5 DAY); => '2024-09-05' |
DAYNAME() | Trả về tên ngày trong tuần từ một giá trị ngày. | SELECT DAYNAME('2024-09-10'); => 'Tuesday' |
DAYOFMONTH() | Trả về ngày trong tháng (1-31). | SELECT DAYOFMONTH('2024-09-01'); => Hàm sẽ lấy ngày đầu tháng trong SQL là ngày 01. |
DAYOFWEEK() | Trả về số ngày trong tuần (1 = Chủ Nhật, 7 = Thứ Bảy). | SELECT DAYOFWEEK('2024-09-10'); => 3 |
DAYOFYEAR() | Trả về số ngày trong năm (1-366). | SELECT DAYOFYEAR('2024-09-10'); => 254 |
EXTRACT() | Trích xuất một phần cụ thể của ngày giờ (như ngày, tháng, năm). | SELECT EXTRACT(YEAR FROM '2024-09-10'); => 2024 |
FROM_DAYS() | Chuyển đổi số ngày thành ngày (tính từ năm 0). | SELECT FROM_DAYS(738000); => '2023-10-03' |
FROM_UNIXTIME() | Chuyển đổi UNIX timestamp thành ngày giờ. | SELECT FROM_UNIXTIME(1672531199); => '2023-01-01 00:59:59' |
HOUR() | Trả về giờ từ một giá trị thời gian. | SELECT HOUR('14:30:00'); => 14 |
LAST_DAY() | Trả về ngày cuối cùng của tháng từ một ngày. | SELECT LAST_DAY('2024-09-10'); => '2024-09-30' |
LOCALTIMESTAMP() | Trả về ngày và giờ hiện tại (giống CURRENT_TIMESTAMP()). | SELECT LOCALTIMESTAMP(); => '2024-09-10 14:30:00' |
LOCALTIME() | Trả về thời gian hiện tại (giống CURRENT_TIME()). | SELECT LOCALTIME(); => '14:30:00' |
MAKEDATE() | Tạo ngày từ năm và số ngày trong năm. | SELECT MAKEDATE(2024, 100); => '2024-04-09' |
MAKETIME() | Tạo thời gian từ giờ, phút và giây. | SELECT MAKETIME(14, 30, 0); => '14:30:00' |
NOW() | Trả về ngày giờ hiện tại. | SELECT NOW(); => '2024-09-10 14:30:00' |
MICROSECOND() | Trả về microsecond từ một giá trị thời gian. | SELECT MICROSECOND('14:30:00.123456'); => 123456 |
MINUTE() | Trả về phút từ một giá trị thời gian. | SELECT MINUTE('14:30:00'); => 30 |
MONTH() | Trả về tháng từ một giá trị ngày. | SELECT MONTH('2024-09-10'); => 9 |
MONTHNAME() | Trả về tên tháng từ một giá trị ngày. | SELECT MONTHNAME('2024-09-10'); => 'September' |
PERIOD_DIFF() | Tính khoảng cách giữa hai kỳ tháng. | SELECT PERIOD_DIFF(202409, 202401); => 8 |
PERIOD_ADD() | Thêm số tháng vào một kỳ. | SELECT PERIOD_ADD(202401, 6); => 202407 |
QUARTER() | Trả về quý của một ngày (1-4). | SELECT QUARTER('2024-09-10'); => 3 |
SECOND() | Trả về giây từ một giá trị thời gian. | SELECT SECOND('14:30:45'); => 45 |
SEC_TO_TIME() | Chuyển đổi giây thành định dạng thời gian. | SELECT SEC_TO_TIME(3661); => '01:01:01' |
STR_TO_DATE() | Chuyển đổi chuỗi thành ngày theo định dạng. | SELECT STR_TO_DATE('10-09-2024', '%d-%m-%Y'); => '2024-09-10' |
SUBDATE() | Trừ số ngày từ một ngày nhất định.
| SELECT SUBDATE('2024-09-10', INTERVAL 5 DAY); => '2024-09-05' |
SUBTIME() | Trừ thời gian từ một giá trị thời gian. | SELECT SUBTIME('14:30:00', '02:30:00'); => '12:00:00' |
SYSDATE() | Trả về ngày giờ hiện tại (tại thời điểm thực thi truy vấn). | SELECT SYSDATE(); => '2024-09-10 14:30:00' |
TIME() | Trả về phần thời gian của một giá trị ngày giờ. | SELECT TIME('2024-09-10 14:30:00'); => '14:30:00' |
TIMEDIFF() | Tính chênh lệch thời gian giữa hai thời điểm. | SELECT TIMEDIFF('14:30:00', '12:00:00'); => '02:30:00' |
TIME_FORMAT() | Định dạng lại thời gian. | SELECT TIME_FORMAT('14:30:00', '%h:%i %p'); => '02:30 PM' |
Để hiểu hơn về cách tính toán, định dạng và truy vấn ngày tháng trong SQL, mời bạn đọc tham khảo khóa học SQL sau tại Gitiho:
SQLG01 - Truy vấn dữ liệu với SQL
Nimbus Academy
Trên đây là hướng dẫn về các hàm date trong SQL để xử lý dữ liệu về thời gian. Hy vọng nó sẽ giúp ích cho bạn trong việc truy vấn dữ liệu của mình. Hãy áp dụng ngay vào công việc để thực hành hiệu quả hơn nha. Chúc bạn thành công!
Xem thêm:
Khóa học giúp bạn làm chủ ngôn ngữ truy vấn dữ liệu phổ biến SQL từ cơ bản đến nâng cao. Từ đó có thể tự tin xây dựng, truy vấn, và tối ưu hóa các cơ sở dữ liệu phức tạp, hỗ trợ phân tích, làm báo cáo và ra quyết định kinh doanh một cách hiệu quả.
Đăng ký học thử để trải nghiệm ngay hôm nay!