Các hàm ngày tháng và xử lý thời gian trong SQL
Bài viết này giới thiệu về các hàm ngày tháng và xử lý thời gian trong SQL như DATE, TIME, TIMESTAMP và DATEPART. Ta sẽ tìm hiểu cú pháp và cách sử dụng các hàm này để thực hiện các phép toán và tính toán liên quan đến ngày tháng. Đồng thời, chúng ta sẽ thảo luận về định dạng ngày tháng, vùng thời gian, và cách chuyển đổi kiểu dữ liệu ngày tháng bằng các hàm CAST và CONVERT. Trong bài viết này, Test Mentor sẽ mang đến kiến thức cơ bản để làm việc hiệu quả với dữ liệu ngày tháng trong SQL.
Nội Dung Bài Viết
Các kiểu dữ liệu ngày tháng và thời gian trong SQL
Trong SQL, có ba kiểu dữ liệu chính được sử dụng để đại diện cho ngày tháng và thời gian. Dưới đây là mô tả ngắn gọn về mỗi kiểu dữ liệu:
DATE
- Định nghĩa: Kiểu dữ liệu DATE trong SQL được sử dụng để lưu trữ chỉ ngày (không bao gồm thời gian). Nó được biểu diễn dưới dạng ‘YYYY-MM-DD’, trong đó YYYY là năm, MM là tháng và DD là ngày.
- Ví dụ:
- Lưu trữ ngày sinh của một người: ‘1990-05-15’
- Lưu trữ ngày hết hạn của một hợp đồng: ‘2023-12-31’
- Lưu trữ ngày đặt hàng trong hệ thống quản lý bán hàng: ‘2024-03-20’
TIME
- Định nghĩa: Kiểu dữ liệu TIME dùng để lưu trữ chỉ thời gian (không bao gồm ngày). Nó được biểu diễn dưới dạng ‘HH:MM:SS’, trong đó HH là giờ, MM là phút và SS là giây.
- Ví dụ:
- Lưu trữ thời gian bắt đầu một sự kiện: ’09:00:00′
- Lưu trữ thời gian khởi chạy của một công việc: ’18:30:45′
- Lưu trữ thời gian đóng cửa cửa hàng: ’21:00:00′
TIMESTAMP
- Định nghĩa: Kiểu dữ liệu TIMESTAMP kết hợp cả ngày tháng và thời gian. Nó đại diện cho một điểm trong thời gian cụ thể và được biểu diễn dưới dạng ‘YYYY-MM-DD HH:MM:SS’.
- Ví dụ:
- Lưu trữ ngày và giờ ghi nhận một giao dịch ngân hàng: ‘2024-04-08 15:45:23’
- Lưu trữ thời điểm tạo bản ghi trong hệ thống log: ‘2024-04-08 10:20:12’
- Lưu trữ thời gian đăng nhập vào hệ thống: ‘2024-04-08 08:55:59’
Các hàm xử lý ngày tháng trong SQL – DATEPART
Cú pháp DATEPART
Hàm DATEPART trong SQL được sử dụng để trích xuất một phần cụ thể từ một giá trị ngày tháng hoặc thời gian.Cú pháp của hàm DATEPART như sau:
DATEPART(datepart, date)
Trong đó:
- datepart là phần cần trích xuất, ví dụ: ‘year’ (năm), ‘month’ (tháng), ‘day’ (ngày), ‘hour’ (giờ), ‘minute’ (phút), ‘second’ (giây), vv.
- date là giá trị ngày tháng hoặc thời gian mà bạn muốn trích xuất phần từ.
Ví dụ sử dụng
- Trích xuất năm từ một giá trị ngày tháng:
SELECT DATEPART(year, '2024-04-08') AS Year;
Output: 2024
- Trích xuất tháng từ một giá trị ngày tháng:
SELECT DATEPART(month, '2024-04-08') AS Month;
Output: 4
- Trích xuất ngày từ một giá trị ngày tháng:
SELECT DATEPART(day, '2024-04-08') AS Day;
Output: 8
- Trích xuất giờ từ một giá trị thời gian:
SELECT DATEPART(hour, '10:30:45') AS Hour;
Output: 10
- Trích xuất phút từ một giá trị thời gian:
SELECT DATEPART(minute, '10:30:45') AS Minute;
Output: 30
- Trích xuất giây từ một giá trị thời gian:
SELECT DATEPART(second, '10:30:45') AS Second;
Output: 45
Các phép toán và tính toán với ngày tháng trong SQL
Trong SQL, bạn có thể thực hiện các phép toán và tính toán với ngày tháng bằng cách sử dụng các toán tử và hàm có sẵn. Dưới đây là các ví dụ về cách thực hiện các phép toán và tính toán phổ biến với ngày tháng trong SQL:
Cộng và trừ ngày tháng
- Cộng một số ngày vào một ngày tháng:
SELECT DATEADD(day, 7, '2024-04-08') AS NewDate;
Output: ‘2024-04-15’
- Trừ một số ngày khỏi một ngày tháng:
SELECT DATEADD(day, -3, '2024-04-08') AS NewDate;
Output: ‘2024-04-05’
- Cộng một số tháng vào một ngày tháng:
SELECT DATEADD(month, 2, '2024-04-08') AS NewDate;
Output: ‘2024-06-08’
- Trừ một số tháng khỏi một ngày tháng:
SELECT DATEADD(month, -1, '2024-04-08') AS NewDate;
Output: ‘2024-03-08’
So sánh ngày tháng
- Xác định liệu chúng có bằng nhau hay không:
SELECT CASE WHEN '2024-04-08' = '2024-04-08' THEN 'Equal' ELSE 'Not Equal' END AS ComparisonResult;
Output: ‘Equal’
- Xác định ngày nào lớn hơn:
SELECT CASE WHEN '2024-04-10' > '2024-04-08' THEN 'Greater' ELSE 'Less or Equal' END AS ComparisonResult;
Output: ‘Greater’
Xác định khoảng thời gian
- Xác định số ngày giữa hai ngày tháng:
SELECT DATEDIFF(day, '2024-04-08', '2024-04-15') AS DayDifference;
Output: 7
- Xác định số tháng giữa hai ngày tháng:
SELECT DATEDIFF(month, '2024-04-08', '2024-06-08') AS MonthDifference;
Output: 2
- Xác định số năm giữa hai ngày tháng:
SELECT DATEDIFF(year, '1990-05-15', '2024-04-08') AS YearDifference;
Output: 33
Lưu ý và quy tắc khi làm việc với ngày tháng trong SQL
Định dạng ngày tháng
SQL có định dạng chuẩn để biểu diễn ngày tháng là ‘YYYY-MM-DD’ cho DATE và ‘YYYY-MM-DD HH:MM:SS’ cho TIMESTAMP. Đảm bảo rằng bạn sử dụng đúng định dạng này khi lưu trữ và truy vấn dữ liệu ngày tháng.
Vùng thời gian và múi giờ
SQL lưu trữ ngày tháng theo múi giờ UTC (Coordinated Universal Time). Khi làm việc với ngày tháng, hãy xem xét vùng thời gian của hệ thống của bạn và chắc chắn rằng dữ liệu được đồng bộ hóa đúng với múi giờ hiện tại.
Sử dụng hàm CAST và CONVERT
Trong SQL, bạn có thể sử dụng hàm CAST và CONVERT để chuyển đổi giữa các kiểu dữ liệu ngày tháng và chuỗi. Ví dụ: CAST(‘2024-04-08’ AS DATE) hoặc CONVERT(DATE, ‘2024-04-08’). Hãy làm quen với cú pháp và quy tắc chuyển đổi khi cần thiết.
Kết luận
Khi xử lý thời gian trong SQL, đảm bảo bạn sử dụng các định dạng đúng, hiểu rõ về vùng thời gian và múi giờ, sử dụng hàm CAST và CONVERT khi cần thiết, và làm quen với các quy tắc và phép toán liên quan đến ngày tháng. Điều này sẽ giúp bạn làm việc hiệu quả và chính xác với dữ liệu ngày tháng trong SQL.
Lan Hoàng
Leave a Comment