如何用单条MySQL语句删除非整点的datetime记录?
解决方案
要删除非整点的记录,核心是判断date_time是否精确到整点(分钟和秒均为0),以下是不同数据库对应的SQL语句:
MySQL/MariaDB
方法1:通过分钟、秒判断
DELETE FROM your_table_name WHERE MINUTE(date_time) != 0 OR SECOND(date_time) != 0;
方法2:截断时间到小时(MySQL 8.0+支持)
DELETE FROM your_table_name WHERE DATE_TRUNC('HOUR', date_time) != date_time;
PostgreSQL
方法1:截断时间到小时
DELETE FROM your_table_name WHERE DATE_TRUNC('hour', date_time) <> date_time;
方法2:提取分钟、秒判断
DELETE FROM your_table_name WHERE EXTRACT(MINUTE FROM date_time) != 0 OR EXTRACT(SECOND FROM date_time) != 0;
SQL Server
方法1:截断时间到小时
DELETE FROM your_table_name WHERE DATEADD(HOUR, DATEDIFF(HOUR, 0, date_time), 0) != date_time;
方法2:提取分钟、秒判断
DELETE FROM your_table_name WHERE DATEPART(MINUTE, date_time) != 0 OR DATEPART(SECOND, date_time) != 0;
重要提醒
执行删除操作前,建议先通过SELECT语句验证要删除的记录是否正确,避免误删:
-- 替换为对应数据库的条件语句 SELECT * FROM your_table_name WHERE MINUTE(date_time) != 0 OR SECOND(date_time) != 0;
内容的提问来源于stack exchange,提问作者xxvizzorxx
相关产品推荐
相关产品推荐

