1. 概述
在對日期型資料進行操作時,經常會遇到要獲取當前日期、獲取當前時間、獲取日期的年月日等等操作。
本文介紹 FineReport 常用的處理日期函式。
注:當日期型公式作為參數在超連結中傳參時,將會傳過去帶有時分秒的原始值。
2. 獲取指定日期時間
實現內容 | 公式 | 結果 | |
---|---|---|---|
獲取當前時間 | |||
獲取當前日期(年月日) | =today() | 若系統日期是 2011 年 11 月 11 號,則傳回值為 2011-11-11 | |
獲取當前時間(時分秒) | =now() | 若儲存格格式為標準,系統日期是 2012 年 06 月 20 號,傳回的值 2012-06-20 14:55:57 | |
顯示當前月份所在季度 | =roundup(month(today())/3) | 若系統日期為 2011 年 11 月 11 號,則傳回值為 4 | |
獲取日期的年、月、日 | |||
獲取年份 | =year("2011-11-11") | 傳回值為 2011 | |
獲取月份 | =month("2011-11-11") | 傳回值為 11 | |
獲取日期 | =day("2011-11-11") | 傳回值為 11 | |
獲取某年/季度/月/週的第幾天 | |||
DATEINYEAR(date, number) 獲取某年的第幾天 | 當前年的第一天 | =dateinyear(today(),1) | 若系統日期是 2011-11-11,則傳回值為 2011-01-01 |
當前年的最後一天 | =dateinyear(today(),-1) | 若系統日期是 2011-11-11,則傳回值為 2011-12-31 | |
DATEINQUARTER(date, number) 獲取某季度的第幾天 | 當前季度的第一天 | =dateinquarter(today(),1) | 若系統日期是 2011-11-11,則傳回值為 2011-10-01 |
當前季度的最後一天 | =dateinquarter(today(),-1) | 若系統日期是 2011-11-11,則傳回值為 2011-12-31 | |
DATEINMONTH(date, number)獲取某月的第幾天 | 當前月的第一天 | =dateinmonth(today(),1) | 若系統日期是 2011-11-11,則傳回值為 2011-11-01 |
當前月的最後一天 | =dateinmonth(today(),-1) | 若系統日期是 2011-11-11,則傳回值為 2011-11-30 | |
DATEINWEEK(date, number) 獲取某週的第幾天 | 當前週的第一天 | =dateinweek(today(),1) | 若系統日期是 2011-11-11,則傳回值為 2011-11-07 |
當前週的最後一天 | =dateinweek(today(),-1) | 若系統日期是 2011-11-11,則傳回值為 2011-11-13 | |
獲取相對於當前月份的某時間 | |||
當月 | =MONTH(today()) | 若系統日期是 2011-11-11,則傳回值為 11 | |
去年同期 | =YEARDELTA(today(),-1) | 若系統日期是 2011-11-11,則傳回值為 2010-11-11 | |
上上月 | =date(year(today()),MONTH(today())-2,day(today())) | 若系統日期是 2011-11-11,則傳回值為 2011-09-11 | |
上月 | =date(year(today()),MONTH(today())-1,day(today())) | 若系統日期是 2011-11-11,則傳回值為 2011-10-11 | |
去年同期上月 | =YEARDELTA(MONTHDELTA(today(), -1),-1) | 若系統日期是 2011-11-11,則傳回值為 2010-10-11 | |
上月月末 | =ENDOFMONTH(TODAY(),-1) | 若系統日期是 2011-11-11,則傳回值為 2011-10-31 | |
上月月初 | =DATEINMONTH(MONTHDELTA(TODAY(),-1),1) | 若系統日期是 2011-11-11,則傳回值為 2011-10-01 | |
上月年月日時分秒 | =date(year(left(NOW(),10)),MONTH(left(NOW(),10)) - 1,day(left(NOW(),10))) + RIGHT(NOW(),9) | 若系統日期是 2011-11-01 13:34:42 ,則回傳值為2011-10-01 13:34:42 |
3. 時間的轉化
實現內容 | 公式 | 結果 | |
---|---|---|---|
資料型別轉化 | |||
將日期形式的「字串」轉化成「時間型」 todate() 可以將任何日期形式的資料轉化成時間型即:yyyy-MM-dd | =todate("2011/11/11") | 若系統日期是 2011 年 11 月 11 號,則傳回值為 2011-11-11 | |
將時間型資料轉化成其他格式的日期形式 format() | =format("2/15/2011","dd/MM/yyyy") | 傳回值為 15/02/2011 | |
陽曆轉化為農曆 | |||
陽曆轉化成農曆 | =lunar(2011,10,11) | 傳回的是 2011 年 10 月 11 號對應的農曆日期即傳回值為辛卯年九月十五 | |
=lunar(2011,10,1) | 傳回的是 2011 年 10 月 1 號對應的農曆日期即傳回值為辛卯年九月初五 |
4. 日期的加減計算
可以透過 datedelta()、monthdelta()、yeardelta() 這三個函式來實現對日期的加減。
實現內容 | 公式 | 結果 | |
---|---|---|---|
資料型別轉化 | |||
日期的加減 | =datedelta(today(),-1) 注:公式中的 -1 表示減一天,若是正數則表示加相應的天數。 | 傳回當前日期前一天的日期,若系統日期是 2011-11-11,則傳回值為 2011-11-10 注:若傳回的日期格式為類似Tue Jul 29 00:00:00 CST 2008。可以使用FORMAT函式巢,例如FORMAT(DATEDELTA("2008-08-08",-10), "MM/dd/yyyy")。 | |
月份的加減 | =monthdelta(today(),-1) | 傳回當前日期上一個月的日期,若系統時間是 2011-11-11,則傳回值為 2011-10-11 | |
年份的加減 | =yeardelta(today(),-1) | 傳回當前日期上一年的日期,若系統日期是 2011-11-11,則傳回值為 2010-11-11 |