我有一个包含列(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行
非常感谢任何帮助。
答案 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