嗨,我想截断表,如果数据是35天前的,有没有办法把if with truncate命令表名Employee放在下面输出
truncate table employee if datediff(day,record_date,getdate()) >35 发布于 2021-01-29 21:06:57
听起来您想要删除记录,而不是截断表:
delete from employee
where record_date < dateadd(day, -35, convert(date, getdate()));注意:如果表是一个大表,那么您可能需要考虑使用分区来存储数据。这允许您删除分区,这通常比删除大量记录快得多。
发布于 2021-01-29 21:07:21
您不需要截断,只需使用DELETE查询。
DELETE FROM table_name WHERE condition;对于SQL server,查询应为:
DELETE FROM employee WHERE datediff(day, GETDATE(), record_date) > 35对于MariaDB / mySQL,DATEDIFF()函数只有两个参数,因为它默认返回天数:
DELETE FROM `employee` WHERE DATEDIFF(now(), `record_date`) > 35TRUNCATE语句的定义如下:
在
中,
TRUNCATE TABLE语句是一种数据定义语言( Data Definition Language,DDL)操作,用于标记表的区段以进行释放(为空以进行重用)。此操作的结果会快速删除表中的所有数据,通常会绕过许多完整性强制机制。它在SQL:2008标准中正式引入。
https://stackoverflow.com/questions/65955038
复制相似问题