Các hàm ngày tháng trong SQL

SQL Dates

Phần khó khăn nhất khi làm việc với ngày tháng là đảm bảo rằng định dạng của ngày tháng bạn muốn chèn vào phải ăn khớp với định dạng ngày tháng của cột trong cơ sở dữ liệu.

Miễn là dữ liệu của bạn chỉ chứa các thông tin ngày tháng, truy vấn của bạn sẽ làm việc như mong đợi. Tuy nhiên, nếu một phần thời gian (giờ phút giây) có liên quan, nó sẽ trở nên phức tạp.

Trước khi nói về sự phức tạp của truy vấn ngày tháng, chúng ta sẽ xem thử các hàm quan trọng nhất được xây dựng để làm việc với ngày tháng.

Các hàm ngày tháng trong MySQL

Bảng dưới đây liệt kê tất cả các hàm quan trọng nhất được xây dựng trong MySQL:

FunctionMô tả
NOW()Trả về ngày tháng và thời gian hiện tại
CURDATE()Trả về ngày hiện tại
CURTIME()Trả về thời gian hiện tại
DATE()Trích xuất các phần ngày của một ngày hoặc biểu thức ngày / thời gian
EXTRACT()Trả về một phần của ngày tháng
DATE_ADD()Thêm một khoảng thời gian nhất định vào một ngày
DATE_SUB()Bớt một khoảng thời gian nhất định từ một ngày
DATEDIFF()Trả về số lượng ngày giữa hai khoảng ngày tháng nào đó
DATE_FORMAT()Hiển thị dữ liệu ngày tháng/thời gian trong các định dạng khác

Các hàm ngày tháng của SQL Server

Bảng dưới đây liệt kê các hàm quan trọng nhất được xây dựng trong SQL Server:

FunctionMô tả
GETDATE()Trả về ngày tháng và thời gian hiện tại
DATEPART()Trả về một phần của ngày tháng/thời gian
DATEADD()Thêm hoặc bớt một khoảng thời gian nhất định từ một ngày
DATEDIFF()Trả về thời gian giữa hai ngày tháng
CONVERT()Hiển thị dữ liệu ngày tháng/thời gian trong các định dạng khác nhau

Các kiểu dữ liệu ngày tháng trong SQL

MySQL đi kèm với các kiểu dữ liệu sau đây để lưu trữ giá trị ngày hoặc ngày tháng / thời gian trong cơ sở dữ liệu (Y là năm, M là tháng, D là ngày, H là giờ, MI là phút, SS là giây; YYYY là năm được lưu dưới dạng bốn chữ số, YY là năm được lưu dưới dạng hai chữ số; MM là lưu tháng dưới dạng hai chữ số, ví dụ tháng 7 sẽ là 07):

  • DATE – định dạng YYYY-MM-DD
  • DATETIME – định dạng: YYYY-MM-DD HH:MI:SS
  • TIMESTAMP – định dạng: YYYY-MM-DD HH:MI:SS
  • YEAR – định dạng YYYY or YY

SQL Server đi kèm với các kiểu dữ liệu sau để lưu trữ giá trị ngày tháng hoặc ngày tháng/thời gian trong cơ sở dữ liệu:

  • DATE – định dạng YYYY-MM-DD
  • DATETIME – định dạng: YYYY-MM-DD HH:MI:SS
  • SMALLDATETIME – định dạng: YYYY-MM-DD HH:MI:SS
  • TIMESTAMP – định dạng: một số duy nhất

Lưu ý: Các kiểu ngày tháng lựa chọn cho cột khi bạn tạo bảng mới trong cơ sở dữ liệu!

Để có cái nhìn tổng quan về tất cả các kiểu dữ liệu có thể có, hãy truy cập vào thư mục các kiểu dữ liệu của chúng tôi.

SQL làm việc với ngày tháng

Bạn có thể so sánh hai ngày tháng một cách dễ dàng nếu không có thành phần thời gian tham gia!

Giả sử chúng ta có bảng “Orders” giống như thế này:

OrderIdProductNameOrderDate
1Geitost2008-11-11
2Camembert Pierrot2008-11-09
3Mozzarella di Giovanni2008-11-11
4Mascarpone Fabioli2008-10-29

Bây giờ chúng ta muốn chọn bản ghi bới OrderDate là “2008-11-11” từ bảng trên.

Chúng ta sử dụng câu lệnh SELECT sau:

SELECT * FROM Orders WHERE OrderDate=’2008-11-11′

Kết quả trả về sẽ trông giống như thế này:

OrderIdProductNameOrderDate
1Geitost2008-11-11
3Mozzarella di Giovanni2008-11-11

Bây giờ giả sử bảng “Orders” trông giống như thế này (lưu ý là phần gian có trong cột “OrderDate”):

OrderIdProductNameOrderDate
1Geitost2008-11-11 13:23:44
2Camembert Pierrot2008-11-09 15:45:21
3Mozzarella di Giovanni2008-11-11 11:12:01
4Mascarpone Fabioli2008-10-29 14:56:59

Nếu chúng ta sử dụng cùng câu lệnh SELECT như trên:

SELECT * FROM Orders WHERE OrderDate=’2008-11-11′

Chúng ta sẽ không nhận được kết quả nào. Điều này là bởi câu truy vấn trên chỉ dành cho ngày tháng không có phần thời gian đi kèm.

Mẹo: Nếu bạn giữ câu truy vấn của bạn đơn giản và dễ dàng để bao trì, đừng đưa phần thời gian giờ phút giây vào trong ngày tháng của bạn.

Tôi là Nguyễn Đức Anh, sinh năm 1987. Hiện là marketing tự do. Theo dõi tôi trên Facebook để nhận thông tin cập nhật về blog này:

Trả lời

Thư điện tử của bạn sẽ không được hiển thị công khai.