SparkSQL如何将日期字段格式化为yyyyMM类型的年月份数据?
问题原因
你之前使用的date_format(delivery_date,'mmmmyyyy')格式符配置错误,mmmm在绝大多数SQL方言中代表月份的完整文本名称(比如9月会输出September),并非两位数值型月份,因此无法得到你要的输出结果。
正确实现方案
根据你常用的SQL运行环境,选择对应写法即可:
- MySQL 环境:
如果delivery_date是日期类型,直接用:
如果DATE_FORMAT(delivery_date, '%Y%m')delivery_date是dd-mm-yyyy格式的字符串类型,需要先转日期再格式化:DATE_FORMAT(STR_TO_DATE(delivery_date, '%d-%m-%Y'), '%Y%m') - SQL Server 环境:
写法1(简单易读):
写法2(性能更优):FORMAT(delivery_date, 'yyyyMM')CONVERT(VARCHAR(6), delivery_date, 112) - Hive/Spark SQL 环境:
DATE_FORMAT(delivery_date, 'yyyyMM')
以上写法针对输入日期16-9-2020,均会输出202009的目标结果。
内容的提问来源于stack exchange,提问作者layal
相关产品推荐
相关产品推荐

