如何查询数据库的当前时间戳_NOW()与服务器时区比对

落伟大大_3228

落伟大大_3228

2026-04-29

966人浏览

原创

MySQL的NOW()返回服务器本地时区时间,受system_time_zone和time_zone共同影响,默认跟随系统时区;PostgreSQL的NOW()默认返回事务启动时的UTC时间(timestamptz类型)。

MySQL 的 NOW() 返回的是服务器本地时区时间

你查出来的 now() 值,不是 utc,也不是客户端时区,就是 mysql 服务进程所在操作系统的当前时区时间。它受 system_time_zone 和 time_zone 两个变量共同影响,但默认情况下完全跟随系统时钟和系统时区设置。

常见错误现象:NOW() 和你本地电脑显示时间不一致,或者和应用日志里记录的 UTC 时间差 8 小时(或其它整数小时),就说明时区没对齐。

  • SELECT NOW(), SYSDATE(), UTC_TIMESTAMP(); —— 这三个函数行为不同:NOW() 和 SYSDATE() 都返回会话时区时间(默认即系统时区),但 SYSDATE() 是执行时刻实时取值,NOW() 在语句开始时就固定了;UTC_TIMESTAMP() 总是返回 UTC 时间,不受任何时区变量影响
  • 检查当前会话时区:SELECT @@session.time_zone;,返回 SYSTEM 表示用系统时区;返回具体值如 '+08:00' 或 'Asia/Shanghai' 则以该时区为准
  • 检查系统时区:SELECT @@global.system_time_zone;,这个值在 MySQL 启动时读取一次,改系统时区后必须重启 MySQL 才生效

PostgreSQL 中 NOW() 默认返回事务启动时的 UTC 时间

和 MySQL 完全相反:PostgreSQL 的 NOW()(等价于 CURRENT_TIMESTAMP)默认返回的是带时区的 UTC 时间戳(timestamptz 类型),且值在事务开始时就确定,不会随系统时间漂移。

使用场景:如果你的应用依赖“统一时间基线”,PostgreSQL 这个行为反而更可靠;但如果你习惯按本地时间写业务逻辑(比如“今天凌晨以来的数据”),直接用 NOW() 可能导致跨时区用户看到不一致结果。

  • 想转成北京时间再比较:NOW() AT TIME ZONE 'Asia/Shanghai'
  • 确认当前会话时区:SHOW TIME ZONE;,返回 UTC 是默认行为;可运行 SET TIME ZONE 'Asia/Shanghai'; 临时切换(仅当前会话)
  • 注意:即使设了 TIME ZONE,NOW() 返回值仍是 timestamptz 类型,只是显示格式和解释方式变了;底层存储始终是 UTC

如何安全地比对数据库时间与服务器真实时钟

不能只靠 NOW() 输出看一眼,因为终端显示、客户端驱动、连接层都可能做隐式时区转换。真正可靠的比对,得让数据库和系统走同一套时间源,并验证输出是否可逆。

容易踩的坑:用 Python 或 Java 应用连上去查 NOW(),结果被 JDBC/connector 自动转成本地时区,你以为数据库慢了 2 小时,其实是驱动在帮你“修正”。

  • 最简验证法:在数据库服务器本机执行 date(Linux/macOS)或 time /t(Windows),再立刻连上数据库跑 SELECT NOW();,对比两者字符串输出(注意格式统一到秒级)
  • 排除客户端干扰:用 mysql -h 127.0.0.1 -u root -p --default-character-set=utf8mb4 这类原生命令行连接,避免 GUI 工具自动格式化
  • 如果发现偏差 > 1 秒:检查服务器 NTP 是否同步(timedatectl status 或 ntpq -p),MySQL/PostgreSQL 自身不维护独立时钟,它完全依赖 OS 系统调用

时区配置改错会导致已有数据语义错乱

修改 time_zone 参数不会改变已存数据,但会改变后续所有时间函数的解释逻辑。尤其当字段类型是 DATETIME(MySQL)或 TIMESTAMP WITHOUT TIME ZONE(PostgreSQL)时,问题更隐蔽。

性能影响不大,但兼容性风险极高——同一个 NOW() 插入语句,在不同时区配置下,含义完全不同。

  • MySQL 中,DATETIME 类型存的是“字面量”,不带时区信息;TIMESTAMP 类型存的是 UTC,读取时按当前 time_zone 转换显示 —— 所以别轻易把 time_zone 从 SYSTEM 改成 '+00:00',否则历史 TIMESTAMP 查询结果全偏了
  • PostgreSQL 中,TIMESTAMP WITHOUT TIME ZONE 也是纯字面量;只有 TIMESTAMP WITH TIME ZONE(即 timestamptz)才真正带时区语义 —— 如果你用 now() 插入到 timestamp 字段,等于主动丢弃时区上下文
  • 上线前务必确认:ORM 框架(如 Django、Rails、MyBatis)是否强制覆盖了连接时区;有些框架默认设 time_zone=+00:00,和 DBA 设置冲突
实际查的时候,最常被忽略的是:你看到的 NOW() 输出,到底是数据库原始返回值,还是客户端渲染后的结果。连错一个参数,时间就偏掉几小时,而且很难一眼发现。
PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

437

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

920

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

2872

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

956

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

869

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

434

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

2616

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

4872

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

767

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.4万人学习