C# asp.net 删除三天前的所有数据 SQL语句怎么写

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# asp.net 删除三天前的所有数据 SQL语句怎么写相关的知识,希望对你有一定的参考价值。

用C#写了写个网站程序, 在后台的日志管理中. 点击清空日志,只能删除距当前日期三天以前的数据.
数据库表: Hu_Log
日期字段: Addtime

请问SQL语句怎么写. 我用的是 Access 数据库.
解决了.根据s3920209 给出的答案.加以修改后. 问题解决了.

DELETE FROM Hu_Log WHERE addtime<=DATEADD('d',-3,'" + DateTime.Now + "')

还有 qs99521 非常感谢你.本来说好把分给你的.但是因为这里有正确答案.所以这么做,不太合适.谢谢各位了. 分给s3920209 .同时非常非常感谢qs99521 对我的帮助.

这个可以写sql语句来解决的

DELETE FROM Hu_Log WHERE Addtime < DATEADD(day, -3, GetDate())

===============
不行的话在补充,-3的意思是三天前
参考技术A set @Date_time=getdate()-3
delete from Hu_Log where Addtime < @Date_time
你试试。
参考技术B delete from tablename where datetimefield<sysdate()-3

sysdate() 是sqlserver的取日期函数,access去查下.
参考技术C 根据dataadd取得距当前时间3天的时间,符合在这时间之前的数据删除掉:
Delete from Hu_Log where Addtime<DateAdd(day,-3,getdate())

ElasticSearch 定时批量删除N天前的数据

描述:

之前我已经完成了使用ElasticSearch、kibana、filebeat、三个工具完成分布式集群收集 分布在各个ip地址上的微服务日志,这样就可以统一的在一个服务器上查看了所有的微服务产生的日志了,避免了一个个通过工具远程linux服务器去查看日志,极大提高了日志查看分析的效率了。当时目前我只是完成收集和查看所有日志,那么时间一长我们就会遇到问题,日志一直发到elastic服务器上,日志越来越多,我就需要一个定时删除过期的日志数据的办法。

功能需求:

需要定时删除elasticSearch指定过期数据,比如只保留N天数据,超过N天前的数据,直接删除。

解决方案:

通过王能的百度搜索,找到了解决方案,这里我们就比如,定时删除30天前收集的日志文件。

步骤1、在kibana控制台完成删除N天数据的命令。

学习kibana 命令 查增删该

官方学习地址:https://www.elastic.co/guide/cn/kibana/current/console-kibana.html

igure 1. 控制台用户界面

控制台可以解析像 cURL 命令这样的语句。例如以下控制台命令

GET /_search
{
  "query": {
    "match_all": {}
  }
}

是 Elasticsearch _search API 的简单 GET 请求。下面是同样效果的 cURL 命令。

curl -XGET "http://localhost:9200/_search" -d‘
{
  "query": {
    "match_all": {}
  }
}‘

实际上,您可以复制粘贴上面的命令到控制台,它会自动转换成控制台语句。

当敲入一行命令,控制台会给出上下文相关的提示。这些提示可以帮助您探索每条 API 参数,或者用于提高输入速度。控制台会提示 APIs 、索引和字段名。技术图片

Figure 2. API 提示

一旦您在左边的面板中敲入命令,您可以点击 URL 行边上的绿色小三角提交这条请求到 Elasticsearch。注意,当您移动光标的时候,会跟随着您。我们把这个叫做动作菜单。您也可以选择写多条请求并一起提交它们。

Figure 3. 动作菜单

当请求响应后,您可以在侧面的面板中看到它:

Figure 4. 输出面板

控制台用户界面

在这个章节中会有更多关于控制台界面的详细描述。控制台章节只介绍了基础的用户界面部分

我们当然主要学习删除命令 

下面是demo代码

POST /filebeat-*/_delete_by_query
{
  "query": {
    "range": {
      "@timestamp": {
        "lt": "now-300d",
        "format": "epoch_millis"
      }
    }
  }
}

其中 "lt": "now-300d", 参数表示 删除 300天前的数据,如需指定N天前,我们只要修改 指定天数即可

下面是执行结果

技术图片

 

 

 

步骤2、将改命令转换成脚本

步骤如图:

技术图片

 

代码:

curl -XPOST "http://127.0.0.1:9200/filebeat-*/_delete_by_query" -H ‘Content-Type: application/json‘ -d‘{
"query": {
"range": {
"@timestamp": {
"lt": "now-300d",
"format": "epoch_millis"
}
}
}
}‘

将说明代码复制后:

windows下脚本

windows下制作成 dos 批处理文件:新建txt,修改文件后缀名为.bat 后将上面代码拷入后保存

注意 windows 下执行 curl命令 需要安装 环境:https://curl.haxx.se/windows/

linux下 编写脚本

linux下新建 .sh 脚本文件 

#!/bin/bash
curl -XPOST "http://127.0.0.1:9200/filebeat-*/_delete_by_query" -H ‘Content-Type: application/json‘ -d‘{
"query": {
"range": {
"@timestamp": {
"lt": "now-300d",
"format": "epoch_millis"
}
}
}
}‘

 

步骤3、将脚本做成定时任务

到此就完成了定时批量删除过期的 elastic 日志文件的功能。

总结 : 其实 elasticserch 可以比如类似 mysql 数据库,kibana 类似 可视化 操作数据库的第三方软件 如 Navicat、PL/SQL工具。

以上是关于C# asp.net 删除三天前的所有数据 SQL语句怎么写的主要内容,如果未能解决你的问题,请参考以下文章

删除指定路径下固定格式,以.log结尾三天前的文件,或删除空的日志文件

python删除日志

Python-日志删除

sql server 2005怎么自动定时删除3天前的备份文件?

sql server 批量备份数据库及删除N天前的备份数据

sql server 2005怎么自动定时删除3天前的备份文件?