gpt4 book ai didi

mysql - YEAR(AVG(UNIX(date))) 与 ROUND(AVG(YEAR(date))) 不同

转载 作者:行者123 更新时间:2023-11-29 09:57:43 26 4
gpt4 key购买 nike

总结一个练习题:
我需要从 datetime 列查询平均年份。我最初的解决方案是YEAR(AVG())所有日期。但由于我无法 AVG()datetime,因此我将日期转换为 unix,然后再转换回 datetime:

SELECT 
YEAR(FROM_UNIXTIME(AVG(UNIX_TIMESTAMP(date1))))
FROM table1;

返回1980

正确的查询是:

SELECT 
ROUND(AVG(YEAR(date1)))
FROM table1;

返回1960
出于明确的原因,第二个查询更好,但为什么结果不同?

最佳答案

您的数据似乎包含早于 1970-01-01 的日期。 UNIX_TIMESTAMP()对于早于纪元的日期,函数返回 0:

SELECT UNIX_TIMESTAMP('1969-12-31')
-- 0

因此,第一个查询的结果存在偏差,因为它没有正确计算 < 1970 年日期。

关于mysql - YEAR(AVG(UNIX(date))) 与 ROUND(AVG(YEAR(date))) 不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53558251/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com