我得到一個奇怪的錯誤,當我執行此DQL查詢:使用日期()函數在WHERE子句中使用DQL
SELECT u FROM User u LEFT JOIN u.schedule s WHERE DATE(s.timestamp) = DATE(NOW())
異常是由主義與消息拋出:
Expected known function, got 'DATE'
該問題看起來與this bug類似,但是它解決了GROUP BY子句中的DATE()函數,並且該錯誤對於Doctrine 2.2是關閉的。在這一刻,我發現了2.4-DEV教條的例外。
該查詢旨在選擇今天計劃的所有用戶。有沒有什麼辦法可以創建這個DQL?我在phpMyAdmin中測試了SQL版本,在那裏查詢不會引發錯誤。什麼可能是錯的?
Doctrine2 DQL沒有DATE()或NOW()函數:http://doctrine-orm.readthedocs.org/en/latest/reference/dql-doctrine-query-language.html#dql-functions 。但是你真的想比較兩個時間戳的平等嗎? – memoryleak
我已安排病人預約(日期+時間),我想列出今天的所有病人。有一個醜陋的方式來做到這一點:準備語句與「日期時間」對象爲「今天」。並將日期時間字段拆分爲「日期」和「時間」部分。我可以克服第一個醜陋的部分,但第二個只是因爲抽象層問題而搞砸你的數據庫。所以這就是爲什麼我希望解決方案,這將工作:)我嘗試了'SELECT CAST(s.timestamp作爲日期)作爲schedule_day從... WHERE schedule_day =:今天',但它返回了類似的錯誤... –