如何删除MS SQL数据库中最早的一周(期间)?
MS SQL 2008R2 Express,我有一个数据库-一个带行的表。当db大小变成10gb时,我需要清理这个表中最老的一周(我不知道日期)。你能帮我写剧本吗?谢谢 UPD1。 有DateAndTime列,所以我在VBA中进行如下查询:如何删除MS SQL数据库中最早的一周(期间)?,sql,sql-server,vba,sql-server-2008r2-express,Sql,Sql Server,Vba,Sql Server 2008r2 Express,MS SQL 2008R2 Express,我有一个数据库-一个带行的表。当db大小变成10gb时,我需要清理这个表中最老的一周(我不知道日期)。你能帮我写剧本吗?谢谢 UPD1。 有DateAndTime列,所以我在VBA中进行如下查询: strSQL = "SELECT DateAndTime ,TagName ,Val ,SetPoint ,Limit_H
strSQL = "SELECT DateAndTime
,TagName
,Val
,SetPoint
,Limit_H
,Limit_L
,Result
FROM dbo.Statistic
WHERE DateAndTime BETWEEN CAST('" & TimeBegin & "' AS datetime) AND CAST( '" & TimeEnd & " ' AS datetime)
Order By DateAndTime desc , (CASE WHEN ISNUMERIC(TagName)=1 THEN CAST(CAST(TagName AS float) AS INT)END ) desc"
这个呢-
DELETE YOUR_TABLE
WHERE DATE_COL BETWEEN (SELECT MIN(DATE) FROM YOUR_TABLE) AND (SELECT MIN(DATE) FROM YOUR_TABLE) + 7
正如Ankit所建议的,使用日期的min()并添加一周
delete
from dbo.statistic
where dateandtime between min(dateandtime)
and dateadd(week, 1, min(dateandtime))
如何识别“最老的一周”?您的意思是这是第一个加载的数据,并且您的表中没有任何时间戳?仅按元数据删除?是否有标识列?或者它是以任何方式订购的?你能发布样品数据吗,请?“我不知道日期”,关于什么?您的表中没有时间戳列?
delete from
是正确的语法,您需要dateadd()
用于SQL Server我认为delete
也会处理同样的问题。虽然我还没有尝试过,但这种语法应该可以使用。@JohnHC它可以在我的MSSQL数据库上使用:SELECT GETDATE()-7