gpt4 book ai didi

sql - 如何获取最近 9 个月的数据?

转载 作者:行者123 更新时间:2023-12-01 16:23:42 26 4
gpt4 key购买 nike

我正在处理存储过程并且需要最近 9 个月的数据。需要一种语法,当新数据添加到表中时,它会自动删除最旧的数据(最新 9 个月的数据)。

该语法将在选择语法中使用。

我用过

select * from tablename t
left outer join calendartable r on
t.fiscal_month=r.fiscal_month
where t.date > dateadd(m,-9,date)

我知道这是错误的。你们能帮我解决这个问题吗?

谢谢

最佳答案

你可能想要 GETDATE从现在开始计算九个月的界限:

where t.date >= dateadd(m,-9, GETDATE())

请注意,如果 t.date 是一个日期和时间字段而不仅仅是日期,您将在九个月的边界上看到奇怪的行为,除非您也将比较前的时间四舍五入。

或者,如果您将其与另一个值进行比较,例如在你的触发器中插入记录的日期然后你所得到的可能是好的,例如像

declare @latest date
select @latest = inserted.date
delete from ... where t.date < dateadd(m, -9, @latest)

虽然我建议您实际归档数据,而不是删除它。


既然你已经明确你想要整月,即从上个月末开始的 9 个月,你可以使用

declare @today date;
declare @firstOfMonth date;
declare @nineMonthsAgo date;
set @today = GETDATE();
set @firstOfMonth = DATEADD(d, 1-DAY(@today), @today);
set @nineMonthsAgo = DATEADD(m, -9, @firstOfMonth);

... WHERE date >= @nineMonthsAgo AND date < @firstOfMonth

关于sql - 如何获取最近 9 个月的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6346204/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com