Hàm xử lý ngày và giờ trong MySQL - TTW Marketing

MySQL cung cấp một bộ các hàm xử lý ngày và giờ mạnh mẽ, cho phép bạn làm việc với dữ liệu ngày tháng và thời gian dễ dàng. Dưới đây là danh sách các hàm quan trọng kèm ví dụ minh họa

Hàm xử lý ngày và giờ mysql

1. Lấy thời gian hiện tại

  • NOW(): Trả về ngày giờ hiện tại (bao gồm cả ngày và giờ).
    SELECT NOW(); -- 2024-11-29 16:30:45
    
  • CURDATE(): Trả về ngày hiện tại (không bao gồm giờ).
    SELECT CURDATE(); -- 2024-11-29
    
  • CURTIME(): Trả về giờ hiện tại (không bao gồm ngày).
    SELECT CURTIME(); -- 16:30:45
    
  • UTC_TIMESTAMP(): Trả về ngày giờ hiện tại theo múi giờ UTC.
    SELECT UTC_TIMESTAMP(); -- 2024-11-29 10:30:45
    

2. Chuyển đổi và định dạng

  • DATE_FORMAT(date, format): Định dạng ngày theo kiểu tùy chỉnh.
    SELECT DATE_FORMAT(NOW(), '%d-%m-%Y %H:%i:%s') AS formatted_date;
    -- 29-11-2024 16:30:45
    
  • STR_TO_DATE(string, format): Chuyển chuỗi thành kiểu DATE hoặc DATETIME.
    SELECT STR_TO_DATE('29-11-2024 16:30:45', '%d-%m-%Y %H:%i:%s');
    -- 2024-11-29 16:30:45
    

3. Tính toán với ngày tháng

  • DATE_ADD(date, INTERVAL expr unit): Cộng thêm một khoảng thời gian.
    SELECT DATE_ADD(NOW(), INTERVAL 7 DAY) AS next_week;
    -- 2024-12-06 16:30:45
    
  • DATE_SUB(date, INTERVAL expr unit): Trừ đi một khoảng thời gian.
    SELECT DATE_SUB(NOW(), INTERVAL 1 MONTH) AS last_month;
    -- 2024-10-29 16:30:45
    
  • ADDDATE(date, INTERVAL expr unit): Tương tự DATE_ADD.
  • SUBDATE(date, INTERVAL expr unit): Tương tự DATE_SUB.
  • DATEDIFF(date1, date2): Trả về số ngày giữa hai ngày.
    SELECT DATEDIFF('2024-12-29', '2024-11-29') AS days_difference;
    -- 30
    
  • TIMESTAMPDIFF(unit, datetime1, datetime2): Trả về sự khác biệt giữa hai giá trị thời gian, với đơn vị cụ thể.
    SELECT TIMESTAMPDIFF(HOUR, '2024-11-29 10:00:00', '2024-11-29 16:30:00') AS hours_difference;
    -- 6
    

4. Trích xuất thành phần ngày giờ

  • YEAR(date): Lấy năm từ giá trị ngày.
    SELECT YEAR('2024-11-29'); -- 2024
    
  • MONTH(date): Lấy tháng từ giá trị ngày.
    SELECT MONTH('2024-11-29'); -- 11
    
  • DAY(date) / DAYOFMONTH(date): Lấy ngày trong tháng.
    SELECT DAY('2024-11-29'); -- 29
    
  • HOUR(time): Lấy giờ từ giá trị thời gian.
    SELECT HOUR('16:30:45'); -- 16
    
  • MINUTE(time): Lấy phút từ giá trị thời gian.
    SELECT MINUTE('16:30:45'); -- 30
    
  • SECOND(time): Lấy giây từ giá trị thời gian.
    SELECT SECOND('16:30:45'); -- 45
    
  • WEEK(date): Lấy số tuần trong năm.
    SELECT WEEK('2024-11-29'); -- 48
    
  • DAYOFYEAR(date): Lấy ngày thứ mấy trong năm.
    SELECT DAYOFYEAR('2024-11-29'); -- 334
    
  • DAYNAME(date): Lấy tên ngày trong tuần.
    SELECT DAYNAME('2024-11-29'); -- Friday
    
  • MONTHNAME(date): Lấy tên tháng.
    SELECT MONTHNAME('2024-11-29'); -- November
    

5. Chuyển đổi múi giờ

  • CONVERT_TZ(datetime, from_tz, to_tz): Chuyển đổi giá trị DATETIME sang múi giờ khác.
    SELECT CONVERT_TZ('2024-11-29 16:30:45', '+00:00', '+07:00') AS converted_time;
    -- 2024-11-29 23:30:45
    

6. Các hàm hỗ trợ khác

  • LAST_DAY(date): Trả về ngày cuối cùng của tháng.
    SELECT LAST_DAY('2024-11-15'); -- 2024-11-30
    
  • TO_DAYS(date): Chuyển đổi ngày thành số ngày kể từ năm 0.
    SELECT TO_DAYS('2024-11-29'); -- 738658
    
  • FROM_DAYS(days): Chuyển đổi số ngày thành ngày tháng.
    SELECT FROM_DAYS(738658); -- 2024-11-29
    
  • UNIX_TIMESTAMP(): Trả về số giây tính từ Unix Epoch (1970-01-01 00:00:00 UTC).
    SELECT UNIX_TIMESTAMP('2024-11-29 16:30:45');
    -- 1732883445
    
  • FROM_UNIXTIME(timestamp): Chuyển đổi timestamp thành giá trị DATETIME.
    SELECT FROM_UNIXTIME(1732883445);
    -- 2024-11-29 16:30:45
    

Kết hợp thực tế

-- Lấy tất cả các bản ghi được tạo trong tháng này:
SELECT * 
FROM example_table 
WHERE MONTH(created_at) = MONTH(NOW()) 
  AND YEAR(created_at) = YEAR(NOW());

Hãy cho mình biết nếu bạn cần thêm thông tin hoặc ví dụ chi tiết nhé! 😊

Đánh giá post