You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何设置默认时间戳为now() + n天?认证流程Token过期时间配置

如何为Token的过期时间戳自动增加n小时/天?

嘿,这个需求太常见啦!我之前做认证系统的时候也经常碰到,其实不用自己手动算时间戳,各种主流数据库都有内置函数能直接帮你给当前时间加上指定时长,既准确又省事儿。下面分几种常用数据库给你具体的实现方式:

MySQL/MariaDB 实现

MySQL里可以用 DATE_ADD() 或者 ADDTIME() 函数来实现:

  • 增加n小时:DATE_ADD(NOW(), INTERVAL 2 HOUR) (把2换成你需要的小时数即可)
  • 增加n天:DATE_ADD(NOW(), INTERVAL 7 DAY) (7就是你要设置的天数)
  • 也可以用更简洁的写法:NOW() + INTERVAL 3 HOUR

实际插入Token的时候,SQL语句大概是这样:

INSERT INTO user_tokens (user_id, token, expires)
VALUES (123, 'xxx-xxx-xxx', DATE_ADD(NOW(), INTERVAL 24 HOUR));

PostgreSQL 实现

PostgreSQL的语法更直观,直接用 + INTERVAL 就行:

  • 增加n小时:NOW() + INTERVAL '4 hours'
  • 增加n天:CURRENT_TIMESTAMP + INTERVAL '7 days'

插入示例:

INSERT INTO user_tokens (user_id, token, expires)
VALUES (123, 'xxx-xxx-xxx', NOW() + INTERVAL '2 days');

SQL Server 实现

SQL Server用 DATEADD() 函数,参数顺序是「时间单位,增量,当前时间」:

  • 增加n小时:DATEADD(HOUR, 6, GETDATE())
  • 增加n天:DATEADD(DAY, 3, GETUTCDATE())

小提示:推荐用 GETUTCDATE() 代替 GETDATE(),避免时区差异导致的过期时间不准问题

插入示例:

INSERT INTO user_tokens (user_id, token, expires)
VALUES (123, 'xxx-xxx-xxx', DATEADD(HOUR, 12, GETUTCDATE()));

额外小建议:应用层处理

如果你不想依赖数据库函数,也可以在应用代码里计算好过期时间再存到数据库。比如:

  • Python里用 datetime.datetime.now() + datetime.timedelta(hours=2)
  • Java里用 LocalDateTime.now().plusHours(2)
    这样做的好处是跨数据库通用,只要保证应用和数据库的时区一致就没问题。

内容的提问来源于stack exchange,提问作者Sergei Basharov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:30:05