我已经为此绞尽脑汁了一段时间,但我想进行一个查询,根据我们所在的月份选择从当前/上个月24日到下个/当前月24日的值-这基本上是从一个工资单到下一个。对SQL查询有什么建议吗?
因此,例如,如果当前日期是3月20日,那么我想要2月24日至3月24日的所有数据,但如果日期超过本月24日,比如3月30日,那么如果这有意义的话,我想要3月24至4月24日。
谢谢,Phill
使用以下表达式:
iif(
day(date()) >= 24,
dateserial(year(date()), month(date()), 24),
dateserial(year(dateadd('m', -1, date())), month(dateadd('m', -1, date())), 24)
)
你可以得到你的病情的开始日期(虽然我不确定>=
符号,也许它应该只是>
?(,所以这样使用它:
select t.col1, t.col2, ...
from (
select *,
iif(
day(date()) >= 24,
dateserial(year(date()), month(date()), 24),
dateserial(year(dateadd('m', -1, date())), month(dateadd('m', -1, date())), 24)
) as start_date
from tablename
) as t
where t.date_column between t.start_date and dateadd('m', 1, t.start_date)
只需减去23天,提取年份和月份:
select year(dateadd("d", -23, datecol)) as year,
month(dateadd("d", -23, datecol)) as month
对于更精简的方法,请使用DateAdd和DateDiff:
Select *
From YourTable
Where DateDiff('m', DateAdd('d', -23, [YourDateField]), DateAdd('d', -23, Date())) = 0