UTC 年度的“末尾”,其实就是下一年的起始边界。它是一个边界,不是某地的钟面读数。上方的实时速查会算出当前的值;在查询和定时任务里,请沿用同一套定义。
上界请用“不包含”
WHERE event_time >= :yearStart
AND event_time < :nextYearStart
这种写法能把目标区间内的所有事件都收进来,既不用去编造一个“最后一秒”,也不会漏掉带亚秒精度的值。
UTC 的一天和本地的一天不是同一段区间
UTC 的一天从 00:00:00Z 开始;而某个具名时区里的营业日从当地午夜开始,对应的 Unix 时间戳可能不同,还会随夏令时规则变动。算边界之前,先想清楚这份报表说的是哪一种“一天”。