mysql获取当前时间戳,适用于不同格式和精度的需求

时间:2025-09-20 12:45

在 MySQL 中,获取当前时间戳的函数有多个,适用于不同格式和精度的需求,以下是常用方法:

1. UNIX_TIMESTAMP()

返回当前时间的UNIX 时间戳(即从 1970-01-01 00:00:00 UTC 到现在的秒数),整数类型。
示例:
sql
SELECT UNIX_TIMESTAMP();  -- 结果:1696500000(示例值)
 
若需要毫秒级精度(MySQL 5.6.4+ 支持),可使用:
sql
SELECT UNIX_TIMESTAMP(NOW(3)) * 1000;  -- 结果:1696500000123(包含毫秒)
 

2. NOW()

返回当前日期和时间,格式为 YYYY-MM-DD HH:MM:SS,包含日期和时间部分。
示例:
sql
SELECT NOW();  -- 结果:2023-10-05 15:30:00(示例值)
 
若需要微秒级精度,可指定小数位数(0-6):
sql
SELECT NOW(6);  -- 结果:2023-10-05 15:30:00.123456(包含微秒)
 

3. CURRENT_TIMESTAMP()

与 NOW() 功能完全相同,是其别名,支持相同的精度参数。
示例:
sql
SELECT CURRENT_TIMESTAMP();  -- 结果同上
SELECT CURRENT_TIMESTAMP(3);  -- 毫秒级精度
 

4. SYSDATE()

返回函数执行时的当前时间,与 NOW() 的区别是:
  • NOW() 在语句开始执行时取值,同一语句中多次调用结果相同;
  • SYSDATE() 每次调用时实时取值,可能因语句执行耗时产生差异。
示例:
sql
SELECT SYSDATE(), SLEEP(2), SYSDATE();  -- 两个时间会相差约2秒
 

应用场景示例:

  • 插入记录时自动添加时间戳:
    sql
    INSERT INTO logs (content, create_time)
    VALUES ('操作日志', NOW());  -- 插入当前时间
    
     
     
  • 计算时间差(如获取 5 分钟前的 UNIX 时间戳):
    sql
    SELECT UNIX_TIMESTAMP() - 300;  -- 300秒 = 5分钟
    
     
     
根据需求选择合适的函数,UNIX_TIMESTAMP() 适合需要整数时间戳的场景,NOW() 适合需要可读性强的日期时间格式的场景。
MySQL日志到底在哪里?Linux/Windows/macOS全平台查找方法在此
MySQL数据库管理工具全景评测:从Workbench到DBeaver的技术选型指南
MySQL密码忘了怎么办?这份重置指南能救急,Windows/Linux/Mac都适用
你的MySQL为什么经常卡死?可能是锁表在作怪!快速排查方法在此
别再混淆Hive和MySQL了!读懂它们的天壤之别,才算摸到大数据的门道
清空MySQL数据表千万别用错!DELETE和TRUNCATE这个区别可能导致重大事故
你的MySQL中文排序一团糟?记住这几点,轻松实现准确拼音排序!
企业级数据架构:MySQL递归查询在组织权限树中的高级应用实践
企业级MySQL索引优化实战:高并发场景下的索引设计与调优
企业级MySQL时间管理实践:高并发场景下的性能优化与时区解决方案