SQL日期间隔

时间:2009-12-02 06:06:10

标签: ms-access

我在ms中有一个表访问包含startDate和EndDate,当两个间隔之间的差异达到6个月时,如何使用SQL从表中删除一行?我不需要通过我给出日期,我需要它,因为我问... 任何帮助PLZ?

3 个答案:

答案 0 :(得分:1)

使用DateDiff

DELETE FROM your_table
WHERE DateDiff("m", startDate, EndDate) = 6

对于6个月及以上的记录:

DELETE FROM your_table
WHERE DateDiff("m", startDate, EndDate) <= 6

答案 1 :(得分:1)

@OMG小马给你一个正确答案:

  DELETE FROM your_table
  WHERE DateDiff("m", startDate, EndDate) <= 6

...但我倾向于不使用它,因为它不会使用索引。相反,我会用这个:

  DELETE FROM your_table
  WHERE StartDate <= DateAdd("m", -6, EndDate)

因为您正在测试字段的计算而不是字面值,所以可以使用StartDate上的任何索引。对于大型表格,这可能是一个显着的差异。

答案 2 :(得分:0)

MSSQL中的一般想法是:

DELETE FROM Archive WHERE [Date] < DATEADD(m, -6, GETDATE())

不确定Access是否具有这些功能但应该有类似的功能。

修改: 我怀疑,Access确实支持Transact-SQL并具有这两个日期函数,但它们仅适用于Microsoft Access项目(.adp)。希望这会有所帮助。