如何从 DATE(不是日期时间、时间戳)和 return DATE(不是日期时间、时间戳)获取 AVG
How to get AVG from DATE (not datetime, timestamp) and return DATE (not datetime, timestamp)
我正在 java 中编写代码,它使用 mySQL 数据库中的 DATE 列。
我想从 DATE 列中获取平均值,但是:
-avg(date_col) returns 不是日期 yyyy-mm-dd 而是某种“奇怪”的数字,
我读了很多堆栈主题“从日期获取平均值”,但每个人都使用时间戳或日期时间(不是日期)...我尝试的所有方法都不适合我。
总结一下...
我必须从 DATE 列中获取平均值,returns 我是“yyyy-mm-dd”,因为我的程序正在以下 etap 中解析它。
如何获取?
将日期转换为 unixtime,取平均值并转换回日期时间:
select cast(from_unixtime(avg(unix_timestamp(dt))) as date)
from data;
Unixtime 只是从 1970-01-01 开始流逝的秒数,因此它是一个整数,您可以从中计算平均值。
DATE_FORMAT 使用 UNIX-Timestamp 就可以了
SELECT DATE_FORMAT(FROM_UNIXTIME(AVG(UNIX_TIMESTAMP(dt))) , '%Y-%m-%d')
FROM data;
Thsi 转换时间 intp 2019-11-30 .
我正在 java 中编写代码,它使用 mySQL 数据库中的 DATE 列。
我想从 DATE 列中获取平均值,但是:
-avg(date_col) returns 不是日期 yyyy-mm-dd 而是某种“奇怪”的数字,
我读了很多堆栈主题“从日期获取平均值”,但每个人都使用时间戳或日期时间(不是日期)...我尝试的所有方法都不适合我。
总结一下... 我必须从 DATE 列中获取平均值,returns 我是“yyyy-mm-dd”,因为我的程序正在以下 etap 中解析它。
如何获取?
将日期转换为 unixtime,取平均值并转换回日期时间:
select cast(from_unixtime(avg(unix_timestamp(dt))) as date)
from data;
Unixtime 只是从 1970-01-01 开始流逝的秒数,因此它是一个整数,您可以从中计算平均值。
DATE_FORMAT 使用 UNIX-Timestamp 就可以了
SELECT DATE_FORMAT(FROM_UNIXTIME(AVG(UNIX_TIMESTAMP(dt))) , '%Y-%m-%d')
FROM data;
Thsi 转换时间 intp 2019-11-30 .