Thời gian của MySQL là gì?

Cơ sở dữ liệu của chúng tôi có một bảng tên là travel với dữ liệu trong các cột id, first_name, last_nametimestamp_of_booking

idfirst_namelast_nametimestamp_of_booking1LisaWatson2019-04-20 14. 15. 342TomSmith2019-03-31 20. 10. 143AndyMarkus2019-08-03 10. 05. 454AliceBrown2019-07-01 12. 47. 54

Đối với mỗi khách du lịch, hãy chỉ lấy họ và tên của họ và ngày đặt phòng. (Ghi chú. Cột timestamp_of_booking chứa cả dữ liệu ngày và giờ. )

Giải pháp

Chúng ta sẽ sử dụng hàm DATE(). Đây là truy vấn bạn sẽ viết

SELECT first_name,
       last_name,
       DATE(timestamp_of_booking) 
         AS  date_of_booking
FROM travel;

Đây là kết quả của truy vấn

first_namelast_namedate_of_bookingLisaWatson2019-04-20TomSmith2019-03-31AndyMarkus2019-08-03AliceBrown2019-07-01

Thảo luận

Trong MySQL, sử dụng hàm DATE() để truy xuất ngày từ giá trị ngày giờ hoặc dấu thời gian. Hàm này chỉ nhận một đối số – có thể là biểu thức trả về giá trị ngày/ngày giờ/dấu thời gian hoặc tên của cột dấu thời gian/ngày giờ. (Trong ví dụ của chúng tôi, chúng tôi sử dụng một cột có kiểu dữ liệu dấu thời gian. )

Hàm DATE() chỉ trả về thông tin ngày tháng. Trong ví dụ của chúng tôi, nó trả về ‘2019-03-31’ cho ngày đặt phòng của Tom Smith. Lưu ý rằng thông tin thời gian không được bao gồm

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ố chèn khớp với định dạng của cột ngày trong cơ sở dữ liệu

Miễn là dữ liệu của bạn chỉ chứa phần ngày, các truy vấn của bạn sẽ hoạt động như mong đợi. Tuy nhiên, nếu có một phần thời gian, nó sẽ phức tạp hơn


Các kiểu dữ liệu ngày 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

Ghi chú. 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 tháng

Nhìn vào bảng sau

Bảng đơn hàng

OrderIdProductNameOrderDate1Geitost2008-11-112Camembert Pierrot2008-11-093Mozzarella di Giovanni2008-11-114Mascarpone Fabioli2008-10-29

Bây giờ chúng tôi 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

CHỌN * TỪ Đơn đặt hàng WHERE OrderDate='2008-11-11'

Tập kết quả sẽ trông như thế này

OrderIdProductNameOrderDate1Geitost2008-11-113Mozzarella di Giovanni2008-11-11

Ghi chú. Hai ngày có thể dễ dàng được so sánh 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 (chú ý thành phần thời gian được thêm vào trong cột "Ngày đặt hàng")

OrderIdProductNameOrderDate1Geitost2008-11-11 13. 23. 442Camembert Pierrot2008-11-09 15. 45. 213 Mozzarella di Giovanni 2008-11-11 11. 12. 014Mascarpone Fabioli2008-10-29 14. 56. 59

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

CHỌN * TỪ Đơn đặt hàng 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 ngày không có phần thời gian

Mẹo. Để giữ cho truy vấn của bạn đơn giản và dễ bảo trì, không sử dụng thành phần thời gian trong ngày của bạn, trừ khi bạn phải

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ố chèn khớp với định dạng của cột ngày trong cơ sở dữ liệu

Miễn là dữ liệu của bạn chỉ chứa phần ngày, các truy vấn của bạn sẽ hoạt động như mong đợi. Tuy nhiên, nếu có một phần thời gian, nó sẽ phức tạp hơn


Các kiểu dữ liệu ngày của 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

Ghi chú. Kiểu dữ liệu ngày đượ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

OrderIdProductNameOrderDate1Geitost2008-11-112Camembert Pierrot2008-11-093Mozzarella di Giovanni2008-11-114Mascarpone Fabioli2008-10-29

Bây giờ chúng tôi 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

CHỌN * TỪ Đơn đặt hàng WHERE OrderDate='2008-11-11'

Tập kết quả sẽ trông như thế này

OrderIdProductNameOrderDate1Geitost2008-11-113Mozzarella di Giovanni2008-11-11

Ghi chú. Hai ngày có thể dễ dàng được so sánh 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 (chú ý thành phần thời gian được thêm vào trong cột "Ngày đặt hàng")

OrderIdProductNameOrderDate1Geitost2008-11-11 13. 23. 442Camembert Pierrot2008-11-09 15. 45. 213 Mozzarella di Giovanni 2008-11-11 11. 12. 014Mascarpone Fabioli2008-10-29 14. 56. 59

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

CHỌN * TỪ Đơn đặt hàng 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 ngày không có phần thời gian

Mẹo. Để giữ cho truy vấn của bạn đơn giản và dễ bảo trì, không sử dụng thành phần thời gian trong ngày của bạn, trừ khi bạn phải

MySQL datetime có phải là một chuỗi không?

MySQL nhận dạng các giá trị DATETIME và TIMESTAMP ở các định dạng này. Là một chuỗi trong cả hai ' YYYY-MM-DD hh. mm. ss ' hoặc ' YY-MM-DD hh. mm. ss ' định dạng . Cú pháp “thoải mái” cũng được cho phép ở đây. Bất kỳ ký tự dấu chấm câu nào cũng có thể được sử dụng làm dấu phân cách giữa các phần ngày hoặc phần thời gian.

kiểu dữ liệu datetime là gì?

Kiểu dữ liệu DATETIME lưu trữ thời gian tức thời được biểu thị dưới dạng ngày theo lịch và thời gian trong ngày . Bạn chọn cách chính xác giá trị DATETIME được lưu trữ; .

Làm cách nào để truy vấn ngày giờ trong MySQL?

Trong MySQL, sử dụng hàm DATE() để truy xuất ngày từ giá trị ngày giờ hoặc dấu thời gian . Hàm này chỉ nhận một đối số – có thể là biểu thức trả về giá trị ngày/ngày giờ/dấu thời gian hoặc tên của cột dấu thời gian/ngày giờ. (Trong ví dụ của chúng tôi, chúng tôi sử dụng một cột có kiểu dữ liệu dấu thời gian. )

Sự khác biệt giữa ngày và ngày giờ là gì?

Loại NGÀY được sử dụng cho các giá trị có phần ngày nhưng không có phần thời gian . MySQL truy xuất và hiển thị các giá trị NGÀY ở định dạng ' YYYY-MM-DD '. Phạm vi được hỗ trợ là '1000-01-01' đến '9999-12-31'. Loại DATETIME được sử dụng cho các giá trị chứa cả phần ngày và giờ.