Sql查询-需要根据日期字段提取记录
我需要从表1中提取数据,并在每个月的最后一个星期一将其插入表2中。我的表格的基本版本如下 表1(ID、名称、生效日期) 表2(ID、名称、生效日期、处理日期) 我只想提取从当前日期算起生效日期为4个月的记录(例如:如果生效日期为1月1日,则应在4月1日之后提取…)。实际上,表2用于报告目的,所以我们有“processDate”字段,可以在过滤时使用 任何帮助都将不胜感激。谢谢 编辑: 我知道我们可以这样做 EffectiveDateSql查询-需要根据日期字段提取记录,sql,sql-server,Sql,Sql Server,我需要从表1中提取数据,并在每个月的最后一个星期一将其插入表2中。我的表格的基本版本如下 表1(ID、名称、生效日期) 表2(ID、名称、生效日期、处理日期) 我只想提取从当前日期算起生效日期为4个月的记录(例如:如果生效日期为1月1日,则应在4月1日之后提取…)。实际上,表2用于报告目的,所以我们有“processDate”字段,可以在过滤时使用 任何帮助都将不胜感激。谢谢 编辑: 我知道我们可以这样做 EffectiveDate
SELECT * FROM Table1 WHERE EffectiveDate >= DATEADD(mm, -4, GETDATE())
更新:
你想要4个月前的所有记录?然后只需切换<运算符:
SELECT * FROM Table1 WHERE EffectiveDate <= DATEADD(mm, -4, GETDATE()) AND processed = 0
从表1中选择*生效日期DATEADD和GETDATE是什么意思?如果您在4月1日运行此查询。。它将检索生效日期晚于1月1日的所有记录。我不想要从1月1日到4月1日的任何记录。我想要的是比1月1日早但尚未处理的记录…(为了简单起见,考虑您在4月1日运行查询…@user569711。。谢谢你的帮助。。我在表1中没有Processed(Bit)字段。但是有没有办法使用表2的ProcessedDate?+1。。我认为逻辑会给我们期望的输出。你认为它会随着表的增长而影响性能吗?当然。要检索的数据越多,所需时间就越长。如果您期望大量数据增长,请正确索引表。我可能还应该指出,您应该去掉*并用实际需要的列名替换它。
SELECT
*
FROM Table1
LEFT JOIN Table2 ON Table1.ID = Table2.ID
WHERE
Table1.EffectiveDate <= DATEADD(mm, -4, GETDATE())
AND Table2.ProcessedDate IS NULL