了解 kysely mysql 的 timestamp to date

2024-12-08

背景

本地的 sql 语句检索出来的 timestamp 的 date 对象与线上 sql 语句返回的结果不同,差8个时区。即 sql 一致,结果不一致。

  • 本地环境 window
  • 线上环境 linux
  • 同一个 mysql

思路

  • 措施: 统一本地与线上的时区,如 修改 process.env.tz 或者修改环境变量
  • 结果: 无效,依然不一样。

解决方案

connectURL 默认指定 Z 作为 timezone,则统一了本地与线上的结果,此为会话级别的时区设置。

查看源码:

  • kysely 会动态生成 db command,由适配器指定的 pool 做执行。
  • create pool 可以接受 options 或者 connectURL 传入。
  • create pool 中有 timezone 选项,可以传入指定 timezone。
  • timezone 默认是 local 或者 Z 或者是 [+-]\d\d:\d\d

参考文档

https://dev.mysql.com/doc/refman/8.4/en/time-zone-support.html

copyright ©2019-2024 shenzhen
粤ICP备20041170号-1