首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用IF条件截断表

使用IF条件截断表
EN

Stack Overflow用户
提问于 2021-01-29 21:05:14
回答 2查看 329关注 0票数 0

嗨,我想截断表,如果数据是35天前的,有没有办法把if with truncate命令表名Employee放在下面输出

代码语言:javascript
复制
truncate table employee if datediff(day,record_date,getdate()) >35 
EN

回答 2

Stack Overflow用户

发布于 2021-01-29 21:06:57

听起来您想要删除记录,而不是截断表:

代码语言:javascript
复制
delete from employee
    where record_date < dateadd(day, -35, convert(date, getdate()));

注意:如果表是一个大表,那么您可能需要考虑使用分区来存储数据。这允许您删除分区,这通常比删除大量记录快得多。

票数 3
EN

Stack Overflow用户

发布于 2021-01-29 21:07:21

您不需要截断,只需使用DELETE查询。

代码语言:javascript
复制
DELETE FROM table_name WHERE condition;

对于SQL server,查询应为:

代码语言:javascript
复制
DELETE FROM employee WHERE datediff(day, GETDATE(), record_date) > 35

对于MariaDB / mySQL,DATEDIFF()函数只有两个参数,因为它默认返回天数:

代码语言:javascript
复制
DELETE FROM `employee` WHERE DATEDIFF(now(), `record_date`) > 35

TRUNCATE语句的定义如下:

中,TRUNCATE TABLE语句是一种数据定义语言( Data Definition Language,DDL)操作,用于标记表的区段以进行释放(为空以进行重用)。此操作的结果会快速删除表中的所有数据,通常会绕过许多完整性强制机制。它在SQL:2008标准中正式引入。

来源:https://en.wikipedia.org/wiki/Truncate_(SQL)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65955038

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档