Mysql 之间使用,Unix 时间戳 [重复]

Posted

技术标签:

【中文标题】Mysql 之间使用,Unix 时间戳 [重复]【英文标题】:Mysql use between, Unix Time Stamp [duplicate] 【发布时间】:2018-07-16 11:37:17 【问题描述】:

所以我尝试如下使用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】:

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

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

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

【讨论】:

以上是关于Mysql 之间使用,Unix 时间戳 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

带有 UNIX 时间戳的 MySQL 表 - 按时间戳排序并计算一行与前一行之间的差异

MySQL常见面试题-2

mysql 时间戳函数FROM_UNIXTIME和UNIX_TIMESTAMP函数的使用说明

如何使用 MySQL 存储 UNIX 时间戳

mysql 中怎么把时间戳转换成正常时间

mysql 中怎么把时间戳转换成正常时间