Thứ Ba, 12 tháng 1, 2021

Làm việc với SQL Dates

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:

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 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:

OrderIdProductNameOrderDate
1Geitost2008-11-11
3Mozzarella di Giovanni2008-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"):

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 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

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master