年末时间戳
查找下一个年份边界的 Unix 时间戳,并复制常见的日期范围值用于年度报告和脚本。
年末边界
对大多数数据库过滤而言,干净的边界是下一年的开始 00:00:00 UTC。把它用作排他上界:created_at >= yearStart and created_at < nextYearStart。
为什么排他上界更安全
排他上界避免了差一秒和毫秒精度的错误。它们在存储秒的小数部分的数据库之间也能干净地工作。
使用年末边界
最安全的年末时间戳是下一年的第一刻,用作排他上界。它表示当前年份停止的那个点,而不依赖于你的存储保留秒、毫秒、微秒还是纳秒。这使同一个过滤器在日志、API 和 SQL 数据库之间可移植。
- 使用 created_at < nextYearStart 而非 created_at <= lastSecondOfYear
- JavaScript 和前端图表范围使用毫秒值
- Unix 工具和大多数后端时间戳列使用秒值
- 检查完整的年度范围时把该值与 yearStart 搭配
验证年末值
把复制的值转换回 UTC,确认它是下一年的 1 月 1 日 00:00:00。尽管人们称之为年末,这个边界有意是该年之后的第一刻,从而在秒、毫秒和微秒精度下保持数据库过滤器干净。它还避免了决定最后存储的记录使用 23:59:59、23:59:59.999 还是更细的小数值。