我正在绘制一个空白,需要一些帮助,找出mysql中语句之间正确的语法
我正在做报告,需要显示年初至今的信息。我想让查询找出年份并将其放在BETWEEN语句中。
如果我执行以下操作,则可以使用:
AND aa.entry_date BETWEEN "2014-01-01" AND "2014-04-30"
但我希望查询能够找出今年的情况并使用它......有点像这样:
AND aa.entry_date BETWEEN Year(CURDATE())+ "-01-01" AND "2014-04-30"
除非这不起作用......在mysql中完成此操作的正确语法是什么?
感谢您的帮助
答案 0 :(得分:2)
您需要使用正确的MySQL语法。 +
是SQL Server连接字符串的方法。 concat()
是MySQL,'+'只是数字加法:
AND aa.entry_date BETWEEN date(concat(Year(CURDATE()), '-01-01')) AND date('2014-04-30')
请注意,我还切换到使用单引号作为字符串和日期常量。这通常可以防止代码中的其他混淆。
答案 1 :(得分:1)
一种选择是使用DATE_FORMAT函数,并提供月和日的文字。
例如:
aa.entry_date BETWEEN DATE_FORMAT(NOW(),'%Y-01-01') AND NOW()
答案 2 :(得分:0)
不要使用CONCAT()和隐式转换,而是使用MAKEDATE()和YEAR()和CURDATE():
AND aa.entry_date BETWEEN MAKEDATE(YEAR(CURDATE()), 1) AND CURDATE()
(未经测试,基于http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html)
答案 3 :(得分:0)
AND YEAR(aa.entry_date) = YEAR(CURDATE())
将在不使用BETWEEN语句的情况下从今年开始选择所有内容。