如果日期早于当前月份,则将日期转换为当前月份的第一天
Posted
技术标签:
【中文标题】如果日期早于当前月份,则将日期转换为当前月份的第一天【英文标题】:Convert date to first of current month if date is previous to current month 【发布时间】:2014-03-19 17:01:58 【问题描述】:我在一个列中有一个带有IIF()
表达式的查询,我用它来识别日期是否早于当前月份,如果是,则对其进行修改。因此,如果我在 19th March 2014
上运行查询并且 EffFrom
日期在 2014 年 3 月 1 日之前,我希望该列条目现在显示为 1st March 2014
。
我正在使用下面的表达式,这几乎可以满足我的要求,但是我知道它没有考虑到这一年——即将1st Jan 2015
的条目更改为1st March 2014
。
EffFrom:
IIf(Month([Table.Efffrom])"Less than symbol"Month(Date()),Date()-Day(Date())+1,[Table.Efffrom])
谁能帮我改正这个表达方式?
【问题讨论】:
我试图更改您的标题以更清晰。我希望它是正确的,并说明了你想要做什么。 这是关于将Efffrom
从前几个月的日期转换为当月的第一天吗? "Less than symbol"
的目的是什么? ...这应该意味着实际的<
字符吗?
嗨,斯曼多利。不幸的是,这不是我想要达到的。我希望当前月份之前的所有 Efffrom 日期都显示为当前月份的第一天。
嗨 HansUp,是的,这就是我想要的。是的,它应该是
@RosscoP,我喜欢你的新头衔。 +1。
【参考方案1】:
我解释了 “如果我在 2014 年 3 月 19 日运行查询并且生效日期在 2014 年 3 月 1 日之前,我希望该列条目现在显示为 2014 年 3 月 1 日” 表示您想要一些东西就像今天(2014 年 3 月 19 日)运行的查询一样:
id Efffrom adjusted_date
1 1/1/2014 3/1/2014
2 3/1/2014 3/1/2014
3 3/31/2014 3/31/2014
4 1/1/2015 1/1/2015
如果正确,您的IIf
表达式可以使用DateSerial
来检查Efffrom
是否在本月的第一天之前,并转换较早的日期。
SELECT
y.id,
y.Efffrom,
IIf
(
y.Efffrom < DateSerial(Year(Date()), Month(Date()), 1),
DateSerial(Year(Date()), Month(Date()), 1),
y.Efffrom
) AS adjusted_date
FROM YourTable AS y;
【讨论】:
行了!我遇到过 Date Serial 但不太明白。谢谢。【参考方案2】:这是我为获得下个月的第一天所做的事情
EffFrom: DateAdd("m",1,CDate(Format([Table.Efffrom],"m/\1/yy")))
【讨论】:
以上是关于如果日期早于当前月份,则将日期转换为当前月份的第一天的主要内容,如果未能解决你的问题,请参考以下文章
Python之计算当前月份的日期范围(calendardatetime)
使用 VBA 在 Access 表中插入当前月份的每个日期记录