2012-04-24 51 views
0

我想檢索尚未完成的事件。 我的問題是開始時間日期時間時間整數在DQL查詢中添加DateTime + Integer

我該如何做這個加法?

此代碼:

$events = $this->getRepository('Event')->createQueryBuilder('e') 
       ->where('e.startTime+e.duration > CURRENT_TIMESTAMP()') 
       ->getQuery(); 
       ->getResult(); 

扔給我:

SQLSTATE[42883]: Undefined function: 7 ERROR: operator does not exist: timestamp without time zone + integer 

回答

0

你可以不爲整數添加日期。 PHP/Doctrine應該如何解釋整數?天,小時,分鐘......?

MySQl提供了一些函數來處理DATE和TIME,其中一些函數可以DQL語言使用,例如DATE_ADD,如果您的整數是一個數字,就是您需要的!看看Doctrine documentation

如果你的整數是秒數量,它不是在DQL實現,所以你需要創建一個「原生SQL查詢」,並使用MySQL的功能,例如ADDTIME

如果你想爲DQL創建一個TIME_ADD函數,請閱讀本文解釋how to create your own DQL functions

+0

thx。是的,我的整數是在幾秒鐘內,這就是爲什麼DATE_ADD()不適用於我:(而且我的懶惰希望有另一種方式比原生SQL – Vivien 2012-04-24 13:38:39

+0

我已經遇到了這個問題,我寫了原生SQL ...: d – AlterPHP 2012-04-24 13:58:46