Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Không nhận được đầu ra mong muốn sau khi thực hiện QoQ

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thiết lập khóa ngoại trong phpMyAdmin?

  2. Chuyển đổi bảng phân biệt chữ hoa chữ thường trong MySQL

  3. Trợ giúp in Mysql thay vì kết nối với máy chủ

  4. hỗ trợ chuyển đổi, khóa cấp hàng, và yếu tố then chốt nước ngoài

  5. Xác định Changeset cho truy vấn chèn trong liquibase