2014-03-19 161 views
2

我在一列中查詢了一個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]) 

有人可以糾正我的表達嗎?

+0

我試圖改變你的標題,以獲得更好的清晰度。我希望這是正確的,並說明你想做什麼。 – Smandoli

+0

這是關於將「Efffrom」日期從前幾個月轉換爲當前月份的第一個? 「小於符號」的目的是什麼? ......這應該是一個實際的「<」字符? – HansUp

+0

嗨Smandoli。不幸的是,這不是我想要實現的。我希望當前月份之前的所有Efffrom日期顯示爲當前月份的第一個月份。 – RosscoP

回答

3

我解釋「如果我在2014年3月19日運行查詢和efffrom日期是1日之前2014年3月我想那列條目現在顯示爲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; 
+1

這會做到!我遇到了Date Serial,但無法完全弄清楚。謝謝。 – RosscoP

0

這裏就是我做的就是下個月的第一天

EffFrom: DateAdd("m",1,CDate(Format([Table.Efffrom],"m/\1/yy"))) 
相關問題