几年前,我写了一个查询,现在回头看一些旧代码时,我试图弄清楚为什么我要这样做。据我所知,其目的只是从UNIX时间戳中提取年份。谁能告诉我使用这项服务有什么好处?
git
而不是简单地:
YEAR(DATE_ADD(DATE_SUB(DATE_ADD(FROM_UNIXTIME( 0 ), INTERVAL FullDate SECOND), INTERVAL @@session.time_zone HOUR_MINUTE), INTERVAL '08:00' HOUR_MINUTE))
答案 0 :(得分:1)
您似乎正在尝试补偿当前时区,然后输出时区UTC+8:00
中的(所在年份)(适用于Wikipedia的国家)。
因此DATE_ADD(FROM_UNIXTIME( 0 ), INTERVAL FullDate SECOND)
为您提供了当前时区的当前时间; DATE_SUB(..., INTERVAL @@session.time_zone HOUR_MINUTE)
将其转换为UTC,然后DATE_ADD(..., INTERVAL '08:00' HOUR_MINUTE)
将时间转换为UTC+8:00
。
如果您不想进行时区转换,那么DATE_FORMAT(FROM_UNIXTIME(FullDate), '%Y')
会完成工作,实际上FROM_UNIXTIME(FullDate, '%Y')
或YEAR(FROM_UNIXTIME(FullDate))