在Unix时间戳之间使用Mysql,

时间:2018-07-16 11:37:18

标签: mysql date-formatting

因此,我尝试按以下方式使用Between时间戳,我将日期存储为Unix时间戳,并且我第一次尝试将其转换,然后在所述时间之间获取所有用户。

SELECT 
  users.*,
  DATE_FORMAT(
    FROM_UNIXTIME(users.created),
    '%Y %b %e '
  ) AS date_formatted 
FROM
  node 
  LEFT JOIN users 
    ON node.uid = users.uid 
WHERE node.uid != 0 
AND
(date_formatted BETWEEN '2017-06-30 00:00:00' AND '2018-06-30 00:00:00')
GROUP BY uid 

但是我收到此错误

  

“ where子句”中的未知列“ date_formatted”

1 个答案:

答案 0 :(得分:1)

如注释中所述,问题是“ date_formatted”是结果的别名。它不在表本身中,因此您不能在WHERE语句中调用它。您可以在查询末尾使用HAVING语句调用它,但这意味着查询必须首先提取比您需要的更多的数据。当涉及到日期时,MYSQL会进行很多隐式转换,因此您可以只使用:

users.created BETWEEN '2017-06-30 00:00:00' AND '2018-06-30 00:00:00'

但是,如果您不想冒险,可以在WHERE语句中应用格式/广播。