使用当前年份的语句之间的mysql

时间:2014-04-24 19:39:44

标签: mysql sql

我正在绘制一个空白,需要一些帮助,找出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中完成此操作的正确语法是什么?

感谢您的帮助

4 个答案:

答案 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语句的情况下从今年开始选择所有内容。