如何获取完整小时而非分钟?datetime时间取整至小时的查询方法
处理Datetime到整小时的SQL语句
根据你使用的数据库类型,对应不同的处理方式:
MySQL/MariaDB
有两种常用方法可以实现:
- 方法1:通过格式化字符串后转回datetime类型
SELECT CAST(DATE_FORMAT('2021-10-27 04:55:00.000', '%Y-%m-%d %H:00:00.000') AS DATETIME);
- 方法2:提取日期和小时后重新拼接
SELECT DATE_ADD(DATE('2021-10-27 04:55:00.000'), INTERVAL HOUR('2021-10-27 04:55:00.000') HOUR);
SQL Server
推荐两种高效写法:
- 方法1:通过时间差截断到小时(性能更优)
SELECT DATEADD(HOUR, DATEDIFF(HOUR, 0, '2021-10-27 04:55:00.000'), 0);
- 方法2:格式化后转换回datetime类型
SELECT CAST(FORMAT('2021-10-27 04:55:00.000', 'yyyy-MM-dd HH:00:00.fff') AS DATETIME);
PostgreSQL
直接使用DATE_TRUNC函数截断到小时:
SELECT DATE_TRUNC('hour', '2021-10-27 04:55:00.000'::TIMESTAMP);
如果需要强制保留毫秒位显示,可再格式化转换:
SELECT TO_CHAR(DATE_TRUNC('hour', '2021-10-27 04:55:00.000'::TIMESTAMP), 'YYYY-MM-DD HH24:MI:SS.FFF')::TIMESTAMP;
Oracle
使用TRUNC函数指定截断到小时维度:
SELECT TRUNC(TO_DATE('2021-10-27 04:55:00.000', 'YYYY-MM-DD HH24:MI:SS.FF3'), 'HH24') FROM DUAL;
内容的提问来源于stack exchange,提问作者Denmark123
相关产品推荐
相关产品推荐

