MySQL - 按 UNIX_TIMESTAMP 对 1970 年之前的日期进行分组

标签 mysql sql group-by

我的查询中有一个 GROUP BY 子句:

SELECT * FROM currency_data
WHERE currency = 'GBP'
GROUP BY UNIX_TIMESTAMP(date) DIV (1440 * 60)
ORDER BY date ASC

这对大多数记录都适用,但是我有一些记录的日期 < 1970。因此,group by 忽略了这些记录。有什么办法可以让这些记录按工作分组吗?

我的“日期”列是 DATETIME 类型。

最佳答案

首先,select *group by 几乎总是错误的做法。您应该使用聚合函数。

没有理由使用 UNIX_TIMESTAMP()。就这样

SELECT date(date), currency, min/max/avg/sum . . . 
FROM currency_data
WHERE currency = 'GBP'
GROUP BY date(date), currency
ORDER BY date ASC

关于MySQL - 按 UNIX_TIMESTAMP 对 1970 年之前的日期进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46810127/

相关文章:

Mysql/php 按最流行的表结构排序

mysql - 从数据库表中获取最后一条和第一条记录的替代方法

sql - 如何将别名添加到 group by 子句

SQL:具有变量组/条件的最大行

php - SQL - 如果不存在则插入,否则更新

mysql - 仅从选择中删除重复特定值的条目

javascript - 在下拉菜单中从数据库更改事件加载数据并填充文本框

sql - PostgreSQL 9.3 - 元素包含在与之间

mysql - SQL:如何查找出现两次以上且具有特定值的条目

sql-server - 用于检索此分组数据的适当 SQL Server 方法?