YEAR(CURDATE() in DQL (Doctrine Query Language)
YEAR(CURDATE() in DQL (Doctrine Query Language)
在MySQL
中有YEAR(CURDATE()
。
mysql> SELECT YEAR(CURDATE());
+-----------------+
| YEAR(CURDATE()) |
+-----------------+
| 2017 |
+-----------------+
如何在DQL中获取?直接使用
$er->createQueryBuilder('s')
->where('s.year = YEAR(CURDATE()');
我获得:
[Syntax Error] line 0, col 105: Error: Expected known function, got 'YEAR'
我在努力
SUBSTRING(CURDATE(),1,4);
在纯 MySQL 中再次正常工作,但在 DQL 中我现在有错误
[Syntax Error] line 0, col 115: Error: Expected known function, got 'CURDATE'
类似的结果:
SUBSTRING(NOW(),1,4);
我的意思是它在 MySQL 中有效,但在学说中以例外结尾:
[Syntax Error] line 0, col 115: Error: Expected known function, got 'NOW'
终于找到答案了:
要获取学说使用的当年:
SUBSTRING(CURRENT_DATE(),1,4)
来源
How can I use now() in Doctrine 2 DQL?
为此,您必须向学说添加一些额外的功能。
这里是 link 一些可以满足您需要的东西。
https://github.com/luxifer/doctrine-functions.
但是,您可能最好使用 php DateTime 对象或 date() 来获取当前年份,并将其作为参数传入
例如
$er->createQueryBuilder('s')
->where('s.year', date('Y'));
在MySQL
中有YEAR(CURDATE()
。
mysql> SELECT YEAR(CURDATE());
+-----------------+
| YEAR(CURDATE()) |
+-----------------+
| 2017 |
+-----------------+
如何在DQL中获取?直接使用
$er->createQueryBuilder('s')
->where('s.year = YEAR(CURDATE()');
我获得:
[Syntax Error] line 0, col 105: Error: Expected known function, got 'YEAR'
我在努力
SUBSTRING(CURDATE(),1,4);
在纯 MySQL 中再次正常工作,但在 DQL 中我现在有错误
[Syntax Error] line 0, col 115: Error: Expected known function, got 'CURDATE'
类似的结果:
SUBSTRING(NOW(),1,4);
我的意思是它在 MySQL 中有效,但在学说中以例外结尾:
[Syntax Error] line 0, col 115: Error: Expected known function, got 'NOW'
终于找到答案了:
要获取学说使用的当年:
SUBSTRING(CURRENT_DATE(),1,4)
来源
How can I use now() in Doctrine 2 DQL?
为此,您必须向学说添加一些额外的功能。
这里是 link 一些可以满足您需要的东西。 https://github.com/luxifer/doctrine-functions.
但是,您可能最好使用 php DateTime 对象或 date() 来获取当前年份,并将其作为参数传入 例如
$er->createQueryBuilder('s')
->where('s.year', date('Y'));