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

如何将SQL中日期时间列的秒数统一置为00?

将日期时间列的秒数置为00的实用方法

针对不同主流SQL数据库,这里整理了几种简单高效的实现方式,适合新手快速上手:

SQL Server

方法1:高效截断法(推荐大数据量使用)

利用DATEADD和DATEDIFF组合,直接截断到分钟级别,自动把秒和毫秒置为0:

SELECT DATEADD(MINUTE, DATEDIFF(MINUTE, 0, YourDateTimeColumn), 0) AS TruncatedDateTime
FROM YourTable;

如果要更新表中的数据:

UPDATE YourTable
SET YourDateTimeColumn = DATEADD(MINUTE, DATEDIFF(MINUTE, 0, YourDateTimeColumn), 0);

方法2:格式化字符串法

适合需要固定格式输出的场景,但大数据量下性能不如截断法:

SELECT FORMAT(YourDateTimeColumn, 'yyyy-MM-dd HH:mm:00.000') AS FormattedDateTime
FROM YourTable;

MySQL

方法1:日期格式化函数(最简单)

用DATE_FORMAT直接指定格式,强制秒数为00:

SELECT DATE_FORMAT(YourDateTimeColumn, '%Y-%m-%d %H:%i:00.000') AS TruncatedDateTime
FROM YourTable;

更新数据的语句:

UPDATE YourTable
SET YourDateTimeColumn = STR_TO_DATE(DATE_FORMAT(YourDateTimeColumn, '%Y-%m-%d %H:%i:00.000'), '%Y-%m-%d %H:%i:%s.%f');

(注:STR_TO_DATE是为了保证结果依然是datetime类型,避免变成字符串)

方法2:时间截断法

通过计算秒数取整实现:

SELECT CONCAT(DATE(YourDateTimeColumn), ' ', TIME_FORMAT(SEC_TO_TIME(FLOOR(TIME_TO_SECOND(YourDateTimeColumn)/60)*60), '%H:%i:00.000')) AS TruncatedDateTime
FROM YourTable;

PostgreSQL

方法1:截断函数(推荐)

PostgreSQL自带的DATE_TRUNC函数可以直接截断到分钟,秒和微秒自动置0:

SELECT DATE_TRUNC('minute', YourDateTimeColumn)::TIMESTAMP(3) AS TruncatedDateTime
FROM YourTable;

(::TIMESTAMP(3)是为了保留三位毫秒,和示例格式一致)

方法2:字符串转换法

先转成指定格式的字符串,再转回datetime类型:

SELECT TO_TIMESTAMP(TO_CHAR(YourDateTimeColumn, 'YYYY-MM-DD HH24:MI:00.000'), 'YYYY-MM-DD HH24:MI:SS.US') AS TruncatedDateTime
FROM YourTable;

注意事项

  • 如果只是查询展示,用格式化函数足够;如果要更新表中数据,优先选择截断类方法,避免字符串转换带来的性能问题和类型错误。
  • 不同数据库的日期函数语法差异较大,要根据自己使用的数据库选择对应方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 06:39:14