试图在工作日和周末获取COUNT()

时间:2014-07-28 19:51:14

标签: mysql count weekday weekend

我有一个包含列(created)的表,该列存储创建该项目时的unix时间戳。

现在我希望COUNT()在工作日(周一到周五)创建的所有项目,与周末(周六和周日)创建的所有项目相比。

我的查询是:

SELECT
  IF (WEEKDAY(FROM_UNIXTIME(`created`)) >= 0 AND WEEKDAY(FROM_UNIXTIME(`created`)) >= 4) THEN COUNT(*) AS `weekday`,
  IF (WEEKDAY(FROM_UNIXTIME(`created`)) <= 5) THEN COUNT(*) AS `weekend`
FROM `mytable`

但我得到的错误是

  

#1064 - 您的SQL语法出错;检查与MySQL服务器版本对应的手册,以便在')附近使用正确的语法THEN COUNT(*),IF(WEEKDAY(FROM_UNIXTIME(created))&lt; = 5)THEN COUNT(*)'at第3行

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您似乎没有使用正确的语法。 http://dev.mysql.com/doc/refman/5.1/en/control-flow-functions.html#function_if

引自上述网址

  

如果(表达式1,表达式2,表达式3)

     

如果expr1为TRUE(expr1&lt;&gt; 0且expr1&lt;&gt; NULL),则IF()返回expr2;否则返回expr3。 IF()返回一个数字或字符串值,具体取决于使用它的上下文。“。

我相信这将是您查询的正确形式,

SELECT
DATE(FROM_UNIXTIME(`created`)) AS `date`,
IF (WEEKDAY(FROM_UNIXTIME(`created`)) >= 0 AND WEEKDAY(FROM_UNIXTIME(`created`)) <= 4, COUNT(*), 0), --WeekDay Count
IF (WEEKDAY(FROM_UNIXTIME(`created`)) >= 5 AND WEEKDAY(FROM_UNIXTIME(`created`)) <= 6, COUNT(*), 0) --Weekend Count

FROM mytable

我也找到了这个链接以及工作日功能。这让我相信你的范围从一开始就不正确。

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