【问题标题】:Trying to fetch COUNT() on weekday and weekend试图在工作日和周末获取 COUNT()
【发布时间】:2014-09-20 02:39:08
【问题描述】:

我有一个表,其中包含一个列 (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 服务器版本相对应的手册,以在第 3 行的 ') THEN COUNT(*), IF (WEEKDAY(FROM_UNIXTIME(created))

非常感谢任何帮助。

【问题讨论】:

    标签: mysql count weekday weekend


    【解决方案1】:

    您似乎没有使用正确的语法。 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

    【讨论】:

    • 该语法似乎是正确的,但它没有返回正确的结果。它在所有工作日返回0,在周末返回完整的COUNT(*)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-29
    • 1970-01-01
    • 2016-01-12
    • 1970-01-01
    相关资源
    最近更新 更多