首页 > 解决方案 > 如何从 DATE(不是日期时间、时间戳)获取 AVG 并返回 DATE(不是日期时间、时间戳)

问题描述

我正在用 java 编写代码,它使用 mySQL 数据库中的 DATE 列。

我想从 DATE 列中获取平均值,但是:

-avg(date_col) 返回的不是日期 yyyy-mm-dd 而是某种“奇怪”的数字,

我阅读了很多堆栈主题“从日期获取平均值”,但每个人都使用时间戳或日期时间(不是日期)......而且我尝试的所有内容都不适合我。

总而言之...我必须从 DATE 列中获取平均值,这会返回“yyyy-mm-dd”,因为我的程序正在下面的 etap 中解析它。

我怎么才能得到它?

标签: mysqldateaverage

解决方案


将日期转换为 unixtime,取平均值并转换回日期时间:

select cast(from_unixtime(avg(unix_timestamp(dt))) as date)
from data;

Unixtime 只是从 1970-01-01 过去的秒数,因此它是一个整数,您可以从中计算平均值。


推荐阅读