Trong quá trình làm việc với cơ sở dữ liệu, kiểu dữ liệu Date là một thành phần không thể thiếu, đặc biệt khi cần phân tích và xử lý thông tin theo thời gian. SQL cung cấp nhiều hàm hỗ trợ thao tác với ngày tháng như trích xuất, tính toán, định dạng lại dữ liệu. Trong bài viết này, UniTrain sẽ giới thiệu đến bạn những hàm ngày tháng phổ biến trong SQL cùng ví dụ minh họa thực tế, giúp bạn áp dụng hiệu quả vào công việc.
Lấy ngày hiện tại
Lấy ngày và giờ hiện tại của hệ thống là một yêu cầu phổ biến trong các giao dịch, xử lý dữ liệu hoặc lên lịch công việc.
GETDATE()
Hàm GETDATE() dùng để lấy ngày và giờ hiện tại từ máy chủ đang chạy. Nó trả về kết quả dưới dạng theo định dạng 'YYYY-MM-DD hh:mm:ss.mmm'
, thời gian mà hàm trả về chính là thời gian của hệ điều hành máy chủ.
Các hàm tính toán ngày tháng
DATEADD
Hàm DATEADD được sử dụng để thao tác với giá trị ngày và giờ dựa trên các tham số được chỉ định. Chúng ta có thể cộng hoặc trừ một giá trị số vào một ngày giờ cụ thể để tính các mốc thời gian trong tương lai hoặc quá khứ.
- datepart là phần của ngày (ví dụ: năm, tháng, ngày…) mà bạn muốn cộng thêm giá trị số vào.
- number là một giá trị số nguyên sẽ được cộng (hoặc trừ nếu âm) vào phần datepart đã chỉ định.
- date là giá trị ngày cụ thể mà bạn muốn cộng thêm (hoặc trừ đi) số lượng đã chỉ định.
-- Thêm 7 ngày vào ngày hiện tại SELECT DATEADD(DAY, 7, GETDATE()) AS NgaySau7Ngay; -- Trừ 2 tháng từ ngày hiện tại SELECT DATEADD(MONTH, -2, GETDATE()) AS HaiThangTruoc; -- Thêm 1 năm vào một ngày cụ thể SELECT DATEADD(YEAR, 1, '2025-01-01') AS MotNamSau;
Hàm DATEDIFF()
dùng để tính khoảng cách giữa hai mốc thời gian, và nó sẽ trả về một con số nguyên (có thể âm hoặc dương). Đơn vị của kết quả (ngày, tháng, năm, giờ…) phụ thuộc vào tham số datepart
mà bạn chọn.
- datepart: Đơn vị thời gian mà bạn muốn tính sự khác biệt, như là năm, tháng, ngày, giờ, phút, giây, v.v.
- startdate: Ngày bắt đầu (hoặc datetime, thời gian, timestamp, v.v.)
- enddate: Ngày kết thúc (hoặc datetime, thời gian, timestamp, v.v.)
SELECT DATEDIFF(year,'2015-01-01','2018-01-01'); --3 SELECT DATEDIFF(month,'2015-01-01','2018-01-01'); --36
ISDATE()
Hàm ISDATE() được sử dụng để kiểm tra xem một giá trị có phải là một giá trị hợp lệ của kiểu dữ liệu DATE, TIME hoặc DATETIME hay không.
- expression: Là chuỗi ký tự hoặc biểu thức có thể giải quyết thành chuỗi ký tự. Độ dài của chuỗi này phải nhỏ hơn 4,000 ký tự.
- expression có thể là giá trị của kiểu dữ liệu.
- expression không thể là giá trị của kiểu DATETIME hoặc SMALLDATETIME.
- Nếu expression là giá trị DATETIME2, hàm sẽ trả về 0.
Lưu ý quan trọng:
- Đối với kiểu dữ liệu DATE: Khoảng giá trị có thể là từ 0001-01-01 đến 9999-12-31.
- Đối với kiểu dữ liệu DATETIME: Khoảng giá trị là từ 1753-01-01 đến 9999-12-31.
Kết luận
Trong quá trình làm việc với cơ sở dữ liệu, việc xử lý và thao tác với dữ liệu ngày tháng là một phần quan trọng, giúp phân tích, tính toán, và lên kế hoạch cho các công việc liên quan đến thời gian. SQL cung cấp nhiều hàm hữu ích để giúp người dùng dễ dàng thao tác với ngày tháng.
Sử dụng thành thạo các hàm này giúp tối ưu hóa quá trình làm việc với dữ liệu ngày tháng trong SQL, hỗ trợ người dùng trong việc lập lịch, phân tích dữ liệu thời gian, và tính toán các khoảng cách giữa các mốc thời gian một cách chính xác.
Theo dõi Fanpage UniTrain để khám phá thêm nhiều thông tin hữu ích nhé.
Xem thêm
Ứng dụng SQL trong xử lý dữ liệu
Phân biệt WHERE và HAVING trong SQL
Xử lý các giá trị NULL với ISNULL và COALESCE trong SQL