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

Gọi DATE_FORMAT () trong MySQL từ Django không thành công

Tôi đoán rằng vấn đề là với dấu phần trăm (% ) trong văn bản truy vấn. (Đó không phải là trình giữ chỗ biến ràng buộc trong Django?) Ví dụ:nếu chúng ta định sử dụng một biến liên kết, biến đó có giống như thế này không?

SELECT 'foo' FROM DUAL WHERE 'a' = %(varname)s ;

Tôi nghĩ có thể Django đang quét văn bản SQL của bạn và gặp phải %w và mong đợi đó là một biến ràng buộc. Hoặc đó, hoặc nó đang chạy sprintf chức năng kiểu và gặp %w và mong muốn thay thế trình giữ chỗ đó bằng một giá trị đối số.

(Tôi chưa thử nghiệm; vì vậy đây chỉ là ý tưởng, chỉ là phỏng đoán.)

Như một dự đoán cho một giải pháp, có thể bạn tăng gấp đôi các dấu phần trăm, giống như chúng ta nhận được% nghĩa thông qua một sprintf:

  query("SELECT ... ,'%%w') ...");

Nếu điều đó không hiệu quả, thì có thể đó là một ký tự gạch chéo ngược, giống như cách chúng ta thoát các ký tự trong một biểu thức chính quy:

  query("SELECT ... ,'\%w') ...");

(Hoặc, bạn có thể cần phải tăng gấp đôi các dấu gạch chéo ngược. Đây chỉ là những phỏng đoán dựa trên các quy ước được sử dụng bởi phần mềm khác.)

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kiểm tra xem mysql_query có trả lại bất kỳ thứ gì hay không

  2. Làm thế nào để trích xuất năm, tháng, ngày, giờ, phút, giây từ một ngày mysql?

  3. Laravel hùng hồn trong đó ngày bằng hoặc lớn hơn DateTime

  4. Nhóm theo tháng bao gồm các tháng trống

  5. Xử lý lịch ngày và dấu thời gian của MySQL trong Java