0

我有一个表,其中包含一个列 ( 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 服务器版本相对应的手册,以在第created3 行的 ') THEN COUNT(*), IF (WEEKDAY(FROM_UNIXTIME( )) <= 5) THEN COUNT(*)'附近使用正确的语法

非常感谢任何帮助。

4

1 回答 1

0

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

从上面的网址引用,

IF(expr1,expr2,expr3)

如果 expr1 为 TRUE(expr1 <> 0 且 expr1 <> 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

mytable

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

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

于 2014-07-28T20:05:54.297 回答