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 表 - 按时间戳排序并计算一行与前一行之间的差异