WITH UT as (SELECT SCode, L, ROW_NUMBER() OVER (ORDER BY SCODE) as RN FROM SP03 WHERE sp02_scode=100) UPDATE UT SET L=RN
Pages
▼
2016-09-14
2016-09-08
提問單〔Access〕:將日期加上指定的年區間的應用(iif / isnull / DateSerial / DateAdd )
如果您有一份資料表中,有2個欄位如上
想要在查詢表或表單中,增加一個欄位,內容為[基準日期]+[年份],要如何處理?
在撰寫運算式時,要注意其中[基準日期]有可能是空值,運算式在若遇到沒有日期的情況,就不進行加總年份。
所以,我們依以下兩個階段將運算式完成
A. 判斷是否[基準日期]為空值
B. 非空值時,我們要將[基準日期]加上[年份]得到我們想要的日期
首先,我們如何判斷日期為空值呢?
通常我們判斷字串為空值都使用 空字串"",但日期的格式則為null,所以可以使用以下函數來確認
- isnull([基準日期])
若為空值則回傳true,有值則回傳false
再來,如何將日期做加減呢?日期函數很多種,都可以達成加減的目的,可以例用以下2個函數來做
- DateAdd(增加類別, 增加量, 日期)
例如:DateAdd("yyyy",[增加年份],[基準日期])
DateAdd("yyyy", 2 , 2016-09-05) → 2018-09-05
Value | Explanation |
---|---|
yyyy | Year |
q | Quarter |
m | Month |
y | Day of the year |
d | Day |
w | Weekday |
ww | Week |
h | Hour |
n | Minute |
s | Second |
- DateSerial(年, 月, 日)
例如:DateSerial(Year([基準日期])+[增加年份], Month([基準日期]), Day([基準日期]))
DateSerial(Year(2016-09-05)+2, Month(2016-09-05), Day(2016-09-05))
→DateSerial(2016+2, 9, 5)→2018-09-05
這些運算式寫好時…就來做判斷的組合了…又要用到經典函數了
- iif(判斷式,成立,不成立)
在Excel中函數為if,Access多了個i喔~iif...千萬別寫錯囉~
我們來完成這個判斷吧!
=iif(isnull([基準日期]),"",DateAdd("yyyy",[增加年份],[基準日期]))
您,組對了嗎??