在Databricks SQL中将mm/dd/yyyy字符串日期转为yyyy-mm-dd遇空值问题
Databricks SQL中mm/dd/yyyy字符串转日期类型返回null的解决方法
直接用date(date_col)或者date(CAST(date_col as timestamp))返回null,是因为Databricks SQL默认的日期解析格式不匹配mm/dd/yyyy,导致无法识别字符串里的日期,最终返回空值。
正确的做法是使用to_date()函数并指定日期格式参数,这个函数支持自定义解析规则,完美适配你的场景:
SELECT to_date(date_col, 'MM/dd/yyyy') AS formatted_date FROM your_table;
MM代表两位数的月份(比如05对应5月),dd是两位数的日期,yyyy是四位年份,完全匹配你的mm/dd/yyyy格式字符串。- 如果你的日期字符串存在单数字的月/日(比如
5/3/2024),把格式参数改成'M/d/yyyy'即可。
如果想避免转换失败时返回null,可以用coalesce()设置默认值:
SELECT coalesce(to_date(date_col, 'MM/dd/yyyy'), date('1900-01-01')) AS formatted_date FROM your_table;
验证示例:
假设表中有一条数据date_col = '03/15/2024',执行上述第一个SQL语句,会返回日期类型的2024-03-15,完全符合你的需求。
内容的提问来源于stack exchange,提问作者rogercake
相关产品推荐
相关产品推荐

