mysql之间使用,unix时间戳

nwlls2ji  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(279)

这个问题在这里已经有答案了

你能在mysql的where子句中使用别名吗(5个答案)
两年前关门了。
所以我想用 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\u formatted”

h7appiyu

h7appiyu1#

正如评论中提到的,问题是“date\u formatted”是结果的别名。它不在表本身中,因此不能在where语句中调用它。您可以在查询结束时使用having语句调用它,但这意味着查询必须首先提取比您需要的多得多的数据。mysql在日期方面做了大量的隐式转换,所以您可以使用:

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

但是如果您不想冒险,可以在where语句中应用格式化/强制转换。

相关问题