使用日期函数遇到mysql查询问题

时间:2014-05-18 20:36:06

标签: c# mysql

我正在尝试编写一个mysql查询来检索很多东西的数量。我需要知道的一件事是,与查询时的当前日期相比,有多少条目的日期不到1个月。我已经搜索了堆栈溢出很多,并查阅了mysql文档,但我正在尝试的任何东西似乎都工作。它一直告诉我我的语法错误。我很茫然。

我有很多关于这个查询,其他一切似乎都运行良好。

我正在使用mysql和phpmyadmin来管理我的数据库,我正在C#/ visual studio环境中编程。我不确切知道我正在使用哪个版本的mysql,但根据phpmyadmin的文档我至少使用5.0版本。我查看了mysql v5.0的文档,然后查看了更新的版本,我尝试使用的sql函数没有改变。所以不应该有这个查询不起作用的原因,但从来没有这样做不起作用。

SELECT count(*) total, ... sum(case where Date <= DATE_SUB(CURDATE(),INTERVAL 1 MONTH) then 1 else 0 end) lastmonth from table;

如果我删除上面的sum语句,则其余查询确实有效。它之前的sum语句是用逗号分隔的,我在语法中看不到任何错误,所以它必须与where语句中的sql函数有关。我从mysql文档页面逐字复制了该语句,只更改了它与之比较的变量的名称以及间隔为1个月。

http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html

所以我完全陷入困境。可以使用一些帮助!谢谢。

1 个答案:

答案 0 :(得分:0)

我能够使用不同的功能获得解决方案。我认为问题是CURDATE()不是mysql服务器识别的函数,但是CURRENT_DATE()是。奇怪的是,mysql文档说它们是一样的。作为参考,这是我最终解决的问题:

sum(case when MONTH(Date) = MONTH(CURRENT_DATE()) then 1 else 0 end) lastmonth

在查看我的要求后,我需要一个查询,检索上个月内“日期”数量的计数,即从当月的第一个月开始到当月的最后一天。