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

SQL中如何截断Timestamp至分钟后再加一分钟?

解决Timestamp截断至分钟后加一分钟的问题

核心逻辑是先把Timestamp截断到分钟级别(清零秒数),再执行你已有的加一分钟操作,以下是不同SQL方言的实现方式:

PostgreSQL/Redshift/雪花SQL

用DATE_TRUNC函数直接截断到分钟,完整语句:

DATEADD(MINUTE, 1, DATE_TRUNC('minute', order.term_end::TIMESTAMP)) AS "TermEnd"

DATE_TRUNC('minute', ...)会把时间的秒、毫秒部分全部清零,比如将3001-01-01T07:59:59Z转为3001-01-01T07:59:00Z,再加一分钟就得到目标时间。

SQL Server

通用写法(兼容全版本)

通过DATEDIFF计算从0时刻到当前时间的分钟数,再转回Timestamp实现截断:

DATEADD(MINUTE, 1, DATEADD(MINUTE, DATEDIFF(MINUTE, 0, order.term_end::TIMESTAMP), 0)) AS "TermEnd"

SQL Server 2022+简化写法

支持DATE_TRUNC函数,写法和PostgreSQL一致:

DATEADD(MINUTE, 1, DATE_TRUNC('minute', order.term_end::TIMESTAMP)) AS "TermEnd"

MySQL

MySQL 8.0+版本

用TRUNCATE函数直接截断到分钟:

DATE_ADD(TRUNCATE(order.term_end, MINUTE), INTERVAL 1 MINUTE) AS `TermEnd`

兼容低版本写法

用DATE_FORMAT格式化时间清零秒数,再转回Timestamp后加一分钟:

DATE_ADD(STR_TO_DATE(DATE_FORMAT(order.term_end, '%Y-%m-%d %H:%i:00'), '%Y-%m-%d %H:%i:%s'), INTERVAL 1 MINUTE) AS `TermEnd`

以上写法均可实现:不管输入是3001-01-01T07:59:00Z还是3001-01-01T07:59:59Z,最终都会得到3001-01-01T08:00:00Z。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 18:55:04