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 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 SQL
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
SQL Server đ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
- SMALLDATETIME - định dạng: YYYY-MM-DD HH: MI: SS
- TIMESTAMP - định dạng: một số duy nhất
Lưu ý: Các loại ngày được chọn 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!
SQL làm việc với ngày
Bạn có thể so sánh hai ngày một cách dễ dàng nếu không có thành phần thời gian liên quan!
Giả sử chúng ta có bảng "Đơn hàng" sau:
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 câu lệnh SELECT 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 |
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 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 cùng một câu lệnh SELECT 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 cho phép các thành phần thời gian trong ngày tháng của bạn!
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile: 0902912888
⚡️ Skype: tranbinh48ca
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: http://bit.ly/ytb_binhoraclemaster
👨 Tiktok: https://www.tiktok.com/@binhoraclemaster?lang=vi
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhoracle
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội
#OracleTutorial #OracleDBA #OracleDatabaseAdministration #học oracle database #oca #ocp #tự học oracle