文本与日期格式相互转换
1. 案例简介
本案例将介绍,如何通过函数进行文本与日期之前的格式转换。
2. 将日期转换为文本格式
2.1 方法一:TEXT函数
要用到的函数:
- TEXT 函数:将日期对象转换为文本格式。
设置公式为:
TEXT(DATE(日期时间),'yyyy-MM-dd')
表示将日期时间字段转换为 yyyy-MM-dd 格式的文本,其中 yyyy 表示年份,MM 表示月份,dd 表示日。
文本的格式可以根据需要进行自由组合,如:
TEXT(DATE(日期时间),'yyyyMMdd')
表示将日期时间字段转换为 yyyyMMdd 格式的文本:
2.2 方法二:DATE函数
要用到的函数:
- DATE 函数:把日期时间(时间戳)转换成时间对象;
- YEAR 函数:取出时间对象中的年份;
- MONTH 函数:取出时间对象中的月份;
- DAY 函数:取出时间对象中的天数;
- TEXT 函数:将数字转换为文本格式;
- CONCATENATE 函数:将多个文本字符串合并成一个文本字符串,把拆分提取的年、月、日和短线符号 “-” 连接起来。
设置公式为:
CONCATENATE(TEXT(YEAR(DATE(日期时间))),'-',TEXT(MONTH(DATE(日期时间))),'-',
TEXT(DAY(DATE(日期时间))))
表示分别提取日期时间字段中的年、月、日信息,将其转换为文本格式,再将这些信息用 “-” 连接起来:
此方法中虽然日期取出正确,但是这样取出的文本 2021-5-12 在月份上只有一位。如果需要统一成 XXXX-XX-XX 的格式,操作方法请参考如下:关于文本位数的补充:
2.3 关于文本位数的补充
因为要对月份和日期补足位数,前面拼接一个 0,所以取出的月和日需要先转成文本,否则直接用+号连接就变成了加法。
- RIGHT(a,b):从字符串 a 的右边取字符,取 b 个;
- TEXT 函数:把数值转换为文本格式。
字段中的年份肯定是 4 位数,可以不用考虑。
月份和日期,可能会出现 1 位数或者 2 位数的情况,我们可以统一成 2 位数的格式,RIGHT 函数是从右边取位字符串的函数,只要在月份前面加一个 0,从右边取 2 位即可:
RIGHT('0'+TEXT(MONTH(DATE(时间日期))),2)
表示假设月份为 12,拼接一个 0 之后,012 取右边 2 位依然是 12;假设月份是 5,拼接一个 0 之后,01 取右边 2 位是 05;这样就实现了取出月份必定是 2 位数的格式。日期同理。
最终设置公式为:
CONCATENATE(TEXT(YEAR(DATE(日期时间))),'-',RIGHT('0'+TEXT(MONTH(DATE(日期时间))),2),'-',
RIGHT('0'+TEXT(DAY(DATE(日期时间))),2))
效果如下:
3. 将文本转换为日期格式
要用到的函数:
以文本 yyyyMMdd 的格式为例,设置公式为:
DATE(VALUE(MID(单行文本,1,4)),VALUE(MID(单行文本,5,2)),VALUE(MID(单行文本,7,2)))
表示分别提取出单行文本中的年、月、日信息,转换成数值格式,再转换为日期时间格式: