1. 概述
在对日期型数据进行操作时,经常会遇到要获取当前日期、获取当前时间、获取日期的年月日等等操作。
本文介绍 FineBI 常用的处理日期函数。
注:其中的日期字段需要从函数编辑框左侧的字段中选择,不能手动输入。
2. 获取指定日期时间
实现内容 | 公式 | 结果 | |
---|---|---|---|
获取当前时间 | |||
获取当前日期(年月日) | =today() | 若系统日期是 2011 年 11 月 11 号,则返回值为 2011-11-11 | |
获取当前时间(时分秒) | =now() | 若单元格格式为常规,系统日期是 2012 年 06 月 20 号,返回的值 2012-06-20 14:55:57 | |
获取日期的年、月、日 | |||
获取年份 | =year("2011-11-11") | 返回值为 2011 | |
获取月份 | =month("2011-11-11") | 返回值为 11 | |
获取日期 | =day("2011-11-11") | 返回值为 11 | |
获取某年/季度/月/周的第几天 | |||
昨天 | NOW()-1 | 若系统时间为 2021-11-09 11:43:53,则返回 2021-11-08 11:43:53 | |
年初第一天 | DATE(YEAR(NOW()),01,01) | 若系统时间为 2011-11-11,则返回 2011-01-01 | |
当月最后一天 | DATE(YEAR(TODAY()),MONTH(TODAY()),DAYSOFMONTH(TODAY())) | 若系统时间为 2021-11-11,则返回 2011-11-30 | |
当月天数 | DAYSOFMONTH(now()) | 若系统时间为 2021-11-11,则返回 30 | |
距今已过多少天 | DATEDIF(date(year(日期),month(日期),DAY(日期)),today(),"D" ) | 若日期为2024-03-01,系统时间为2024-03-12,则返回 11 | |
当年第几周 | week(today()) | 若日期为2021-10-10,则返回 41 | |
获取相对于当前月份的某时间 | |||
当月 | =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 | |
去年同期上月 | =date(year(today())-1,MONTH(today())-1,day(today())) | 若系统日期是 2011-11-11,则返回值为 2010-10-11 | |
当月月末 | =DATEDELTA(date(year(MONTHDELTA(日期,1)),month(MONTHDELTA(日期,1)),1),-1) 或者 DATE(YEAR(日期),MONTH(日期)+1,1-1) | 若系统日期是 2011-11-11,则返回值为 2011-11-30 | |
取当前维度下的最大值时间 注:仅适用于仪表板。 | FORMAT(TODATE(MAX_AGG(DATETONUMBER(日期))),"YYYY-MM-dd HH:mm:ss") | ||
取时间最大值-自助数据集 | 取最晚时间的数据 | 自助数据集-最晚时间 |
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 | |
月份的加减 | =monthdelta(today(),-1) | 返回当前日期上一个月的日期,若系统时间是 2011-11-11,则返回值为 2011-10-11 | |
年份的加减 | =yeardelta(today(),-1) | 返回当前日期上一年的日期,若系统日期是 2011-11-11,则返回值为 2010-11-11 |