输入dd/MM/yy日期列,如何转为带斜杠的dd/MM/yyyy格式date类型
解决Date类型日期显示格式问题
核心本质
Date类型本身不存储任何显示格式,它只是一个代表日期的时间戳值。你看到的dd-MM-yyyy是系统默认的渲染格式,并非Date类型自带的属性。
可行解决方案
1. 保留Date类型,自定义显示格式
如果必须保留Date类型,同时要显示为dd/MM/yyyy格式,需要在输出/展示环节设置:
- 若用Spark SQL,可以全局修改默认日期显示格式:
执行这个配置后,所有Date类型列的查询结果都会默认以SET spark.sql.dateFormat='dd/MM/yyyy';dd/MM/yyyy格式展示,且列类型仍为Date。 - 若用BI工具、Excel等导出/展示数据,直接在工具中设置日期列的显示格式为
dd/MM/yyyy即可。
2. 用字符串存储格式化后的日期(业务允许的话)
如果业务场景不需要频繁做日期运算,直接生成带格式的字符串更直接:
date_format(toDate(col, 'dd/MM/yy'), 'dd/MM/yyyy')
这样得到的是dd/MM/yyyy格式的字符串列,后续若需要日期运算,再用toDate(xxx, 'dd/MM/yyyy')转回Date类型即可。
误区纠正
toDate()或CAST()转换得到的Date类型,其显示格式由系统配置决定,无法直接修改Date类型本身的"内置格式"——因为Date类型根本不存格式,只存日期值。
内容的提问来源于stack exchange,提问作者AzSurya Teja
相关产品推荐
相关产品推荐

