2008-11-06 40 views
46

Tôi cần thực hiện so sánh ngày trong Mysql mà không tính đến thành phần thời gian tức là tôi cần chuyển đổi '2008-11-05 14:30:00' thành '2008-11-05'Thành phần thời gian dải Mysql từ datetime

Hiện nay tôi đang làm điều này:

SELECT from_days(to_days(my_date)) 

có một cách thích hợp để làm điều này?

Trả lời

89

Có, sử dụng các chức năng date:

SELECT date(my_date) 
3

Trong PostgreSQL bạn sử dụng TRUNC() chức năng, nhưng tôi không nhìn thấy nó cho MySQL. Từ Googling ngắn gọn của tôi, có vẻ như bạn sẽ cần truyền giá trị DATETIME của bạn chỉ là DATE.

date_col = CAST(NOW() AS DATE) 

Xem http://dev.mysql.com/doc/refman/5.0/en/date-and-time-types.html

+1

'date_trunc() '(không phải' trunc() ') sẽ không thực sự * loại bỏ * phần thời gian trong Postgres. Nó sẽ chỉ đặt nó thành '00: 00: 00', cái gì đó khác. –

3

select date(somedate) là phổ biến nhất.

Nếu bạn cần phải chứa các định dạng khác, bạn có thể sử dụng:

SELECT DATE_FORMAT('2009-10-04 22:23:00', '%Y-%m-%d'); 
+1

DATE_FORMAT rất hữu ích khi chỉ trích xuất thành phần năm. Cảm ơn bạn. –

-3

Bạn có thể sử dụng ToShortDateString();

+0

Đó không phải là một hàm C#? Câu hỏi đặt ra là sau một giải pháp MySQL – andrewsi

+0

Đó là C# và thực sự nó không loại bỏ dấu thời gian: Chuyển đổi giá trị của đối tượng DateTime hiện tại thành biểu diễn chuỗi ngày tháng tương đương của nó. –

1

Chỉ cần một cách đơn giản để làm việc đó date("d F Y",strtotime($row['date'])) nơi $row['date'] xuất phát từ yêu cầu của bạn

Các vấn đề liên quan