1. 概述
本文档收集用户在使用E数通进行分析的过程中,在使用日期字段时遇到的常见问题及对应文档,帮助与指导用户快速找到想要的答案。
1.1 可识别为日期的文本字段
仅以下格式的文本字段可识别为时间类型:
时间类型 | 格式 | 示例 | E数通识别后的内容 |
---|---|---|---|
年月日时分秒 | yyyyMMdd HH:mm:ss | 20221018 16:32:47 | 2022-10-18 16:32:47 |
yyyy/MM/dd HH:mm:ss | 2022/10/18 16:32:47 | 2022-10-18 16:32:47 | |
yyyy-MM-dd HH:mm:ss | 2022-10-18 16:32:47 | 2022-10-18 16:32:47 | |
MM/dd/yyyy HH:mm:ss | 10/18/2022 16:32:47 | 2022-10-18 16:32:47 | |
年月日时分 | yyyyMMdd HH:mm | 20221018 16:32 | 2022-10-18 16:32:00 |
yyyy-MM-dd HH:mm | 2022-10-18 16:32 | 2022-10-18 16:32:00 | |
年月日时 | yyyy-MM-dd HH | 2022-10-18 16 | 2022-10-18 16:00:00 |
年月日 | yyyy/MM/dd | 2022/10/18 | 2022-10-18 |
yyyy-MM-dd | 2022-10-18 | 2022-10-18 | |
MM/dd/yyyy | 10/18/2022 | 2022-10-18 |
1.2 支持的日期格式
以 「2019/8/1 16:17:32」为例,在 Excel 中修改单元格日期类型为「星期四」,上传至E数通后仍识别为日期字段,字段值为:「2019-08-01 16:17:32」。
支持识别的日期格式如下图所示:
1.3 注意事项
在E数通中,只有日期类型为「年月日」或者「年月日时分秒」的时候字段才显示为日期字段,其余类型显示为文本或者数值类型。
如果将日期类型转化为年/月/季度等,是为了在仪表板中绑定筛选器筛选出年/月/季度,那么不需要进行转化,对应的时间筛选器绑定原日期字段都可以生效。例如原日期字段为「年月日」,在仪表板中添加年份筛选器,绑定该字段,即可过滤出对应年份的数据。
如果是想要在仪表板中展示年份数据且想要进行筛选,可以将类型转化为年份,同时保留原字段,添加的时间筛选器绑定原日期字段即可。
如果想转化成其他的日期类型,我们提供一些公式来实现,详情参见第 3 节。
2. 动态时间
用户可以设置过滤值为相对于当前时间的动态时间,可以随着日期变化而变化。
问题描述一:
可以在仪表板中动态展示本月的数据吗?
解决方案:
可以的。在仪表板中添加日期区间筛选器,在动态时间里设置好相对当前时间的相关信息即可。详情参见文档:过滤动态时间
问题描述二:
我只想在分析表中动态筛选出近一个月的数据,怎么操作呢?
解决方案:
在历史步骤中添加「筛选」步骤,添加筛选条件,对日期字段进行动态时间设置,如下图所示:
3. 日期字段转换
3.1「2021-12-06 08:35:02」转换成「2021-12-06」
方案一:
数据中的日期字段展示为年月日时分秒,但是只想要展示年月日,可以历史步骤中增加「分类汇总」,对日期字段的分组设置为「年月日」,下图所示:
E数通支持的时间分类类型有:年月日、年周数、年月、年季度、年、季度、月份、月日、周数、星期、日、时、秒、分、年月日时分秒,都可以通过上述方式进行转换。
方案二:
如果是在制作图表时想要更改日期字段的分组方式,可以直接对该字段更改分类,如下图所示:
注:明细表中日期字段不可以更改分组方式,需要按照方案一在分析表中进行修改。
方案三:
如果字段较多,分类汇总拖字段比较麻烦,可以新增字段,使用 FORMAT 函数来获取年月日,定义这个字段类型为日期,也可以实现上述场景。公式为:FORMAT(时间,"yyyy-MM-dd")。如下图所示:
3.2「2021-12-06 08:35:02」转换成「08:35:02」
3.1 节中不包括日期字段按照「时分秒」分类,我们可以用 FORMAT 函数来实现,公式为:FORMAT(时间,"HH:mm:ss")。如下图所示:
使用 FORMAT 函数将日期字段转化成「时分秒」分类,该字段就会变成文本格式。若后续步骤想要实现日期筛选的效果,可以将原日期字段保留,筛选器绑定原日期字段。
3.3「2021-12-06 08:35:02」转化为「20211206083502」
如果想要年月日时分秒的类型转化为数值型格式,也可以使用 FORMAT 函数,公式为:FORMAT(时间,"YYYYmmddHHmmss")。如下图所示:
3.4「2022年10月」转化为「2022-10」
字段类型为文本,内容为 2022年10月,如果直接将这个字段改为日期格式,就会报错:
我们可以使用 TODATE 函数来解决这个场景问题,公式为:TODATE(测试,"yyy'年'MM'月")。任何带 yyyyMMdd 的格式,都可以转换成标准时间格式。转化为日期字段后,再按照 3.1 节的分类汇总中更改日期分组为年月即可。
3.5「2022-10」转化为日期字段「2022-10-1」
同 3.4 节,「2022-10」也是不能直接转化为日期字段,需要使用到公式:TODATE(测试,"yyy-MM"),如下图所示:
3.6 时间为 20221018 的文本或数值字段转化为日期字段
问题描述:
如果在 Excel 中的年月日类型为:yyyyMMdd,例如 20221018。在 Excel 中为文本或者数值格式,在上传至E数通会变成数值字段,如下图所示:
解决方案一:
我们可以直接将这个字段更改为「日期」类型,如下图所示:
解决方案二:
在上传时没有修改字段类型的话,在编辑这张数据表时也可以更改。但是需要两次字段类型转换,需要先将数值字段先转换为文本,再将文本字段转换为日期,如下图所示:
解决方案三:
使用公式:TODATE(字段列,"yyyyMMdd"),也可以将 20201018 转化为日期字段 2022-10-18。如下图所示:
4. 计算两个日期字段的间隔天数
例如在合同事实表中,有注册时间和合同签约时间两个时间,我想要计算两个字段之间的天数差,可以用到 DATEDIF 函数来实现,公式为:DATEDIF(合同签约时间,注册时间,"D")。如下图所示:
使用 DATEDIF 函数时,初始日期需在终止日期之前,否则计算出的结果会出错,如下图所示:
5. 获取当月第一天/最后一天
获取当天时间公式:today(),例如今天为 2022-10-25,该公式获取的时间为:2022-10-25;
获取当月第一天公式:date(year(today()),month(today()),1),例如今天为 2022-10-25,该公式获取的时间为:2022-10-01;
获取当月最后一天公式:date(year(today()),month(today())+1,0),例如今天为 2022-10-25,该公式获取的时间为:2022-10-31;
获取当月月底前一天公式:date(year(today()),month(today())+1,-1),例如今天为 2022-10-25,该公式获取的时间为:2022-10-29;
获取当月月底前两天公式:date(year(today()),month(today())+1,-2),例如今天为 2022-10-25,该公式获取的时间为:2022-10-29;
获取当天的前一天公式:date(year(today()),month(today()),day(today())-1),例如今天为 2022-10-25,该公式获取的时间为:2022-10-24;
获取当天的前两天公式:date(year(today()),month(today()),day(today())-2),例如今天为 2022-10-25,该公式获取的时间为:2022-10-23;
......
利用以上公式和DATEDIF 函数,我们可以计算这个月的剩余天数,公式为:DATEDIF(TODAY(),date(year(today()),month(today())+1,0),"D"),如下图所示:
6. 日期和其他字段拼接
例如两个字段,时间和城市,内容有「2021-12-06 08:35:02」和「杭州」,我想把数据拼接为「20211206083502杭州」作为一个新字段进行展示。
我们可以先按照 3.3 节的方式将日期形式「20211206083502」,再使用 CONCATENATE 将两个字段合并为一个进行展示,如下图所示: