Các truy vấn trong bộ nhớ (QoQ's) có thể phức tạp khi nói đến các loại dữ liệu. Họ ít hiểu biết hơn về các chuyển đổi kiểu dữ liệu ngầm định so với cơ sở dữ liệu. Bằng cách sử dụng date_format
của MySQL , bạn thực sự đang chuyển đổi các giá trị ngày giờ thành chuỗi . Vì vậy, khi bạn chạy QoQ của mình, CF có thể thực sự đang thực hiện một chuỗi so sánh, sẽ mang lại kết quả rất khác so với ngày sự so sánh. Có thể giải thích tại sao bạn nhận được kết quả sai.
Thử thay đổi cơ sở dữ liệu của bạn truy vấn để trả về giá trị ngày giờ thay vì một chuỗi:
SELECT
COUNT(Timedetail) as Occurances
, STR_TO_DATE( DATE_FORMAT(Timedetail,'%m-%d-%Y'), '%m-%d-%Y') AS Timedetail
FROM ....
WHERE ...
Cập nhật:
Một tùy chọn khác là ĐÚC giá trị dưới dạng DATE
trong QoQ của bạn. Điều đó sẽ buộc QoQ thực hiện so sánh ngày, thay vì so sánh chuỗi:
WHERE CAST(Timedetail AS DATE) >= <cfqueryparam value="#form.startdate#"
cfsqltype="cf_sql_date">