我在一个列中有一个IIF()
表达式的查询,我用它来确定日期是否在当前月份之前,然后再修改它。因此,如果我在19th March 2014
上运行查询且EffFrom
日期在2014年3月1日之前,我希望该列条目现在显示为1st March 2014
。
我正在使用下面的表达式,它几乎正在做我想要的,但是我知道它不考虑年份 - 即它正在将1st Jan 2015
的条目更改为1st March 2014
。< / p>
EffFrom:
IIf(Month([Table.Efffrom])"Less than symbol"Month(Date()),Date()-Day(Date())+1,[Table.Efffrom])
有人可以为我纠正这个表达吗?
答案 0 :(得分:3)
我解释了&#34;如果我在2014年3月19日运行查询并且efffrom日期是在2014年3月1日之前,我希望该列条目现在显示为2014年3月1日&#34; 表示你想从今天的查询(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;
答案 1 :(得分:0)
这是我为了下个月的第一天所做的工作
EffFrom: DateAdd("m",1,CDate(Format([Table.Efffrom],"m/\1/yy")))