MySQL làm việc với ngày
MySQL Dates
Phần khó 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 bạn đang cố gắng chèn khớp với định dạng của cột ngày tháng trong cơ sở dữ liệu.
Miễn là dữ liệu của bạn chỉ chứa phần ngày tháng, các truy vấn của bạn sẽ hoạt động như mong đợi. Tuy nhiên, nếu liên quan đến một phần thời gian, nó sẽ phức tạp hơn.
Các kiểu dữ liệu ngày trong MySQL
MySQL đi kèm với các kiểu dữ liệu sau để lưu trữ ngày hoặc giá trị ngày / giờ trong cơ sở dữ liệu:
-
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 hoặc YY
Lưu ý: Kiểu dữ liệu ngày tháng được đặt cho một cột khi bạn tạo một bảng mới trong cơ sở dữ liệu của mình!
Làm việc với Ngày
Nhìn vào bảng sau:
Bảng đơn hàng
OrderId | ProductName | OrderDate |
---|---|---|
1 | Geitost | 2008-11-11 |
2 | Camembert Pierrot | 2008-11-09 |
3 | Mozzarella di Giovanni | 2008-11-11 |
4 | Mascarpone Fabioli | 2008-10-29 |
Bây giờ chúng ta muốn chọn các bản ghi có OrderDate là "2008-11-11" từ bảng trên.
Chúng tôi sử dụng SELECT
câu lệnh sau:
SELECT * FROM Orders WHERE OrderDate='2008-11-11'
Tập hợp kết quả sẽ giống như sau:
OrderId | ProductName | OrderDate |
---|---|---|
1 | Geitost | 2008-11-11 |
3 | Mozzarella di Giovanni | 2008-11-11 |
Lưu ý: Có thể dễ dàng so sánh hai ngày nếu không có thành phần thời gian liên quan!
Bây giờ, giả sử rằng bảng "Đơn hàng" trông như thế này (lưu ý thành phần thời gian được thêm vào trong cột "Ngày đặt hàng"):
OrderId | ProductName | OrderDate |
---|---|---|
1 | Geitost | 2008-11-11 13:23:44 |
2 | Camembert Pierrot | 2008-11-09 15:45:21 |
3 | Mozzarella di Giovanni | 2008-11-11 11:12:01 |
4 | Mascarpone Fabioli | 2008-10-29 14:56:59 |
Nếu chúng ta sử dụng SELECT
câu lệnh tương tự như trên:
SELECT * FROM Orders WHERE OrderDate='2008-11-11'
chúng tôi sẽ không nhận được kết quả! Điều này là do truy vấn chỉ tìm kiếm các ngày không có phần thời gian.
Mẹo: Để giữ cho các truy vấn của bạn đơn giản và dễ duy trì, không sử dụng các thành phần thời gian trong ngày tháng của bạn, trừ khi bạn phải làm như vậy!