在 Databricks SQL 中将字符串转换为日期返回 null
Posted
技术标签:
【中文标题】在 Databricks SQL 中将字符串转换为日期返回 null【英文标题】:Converting String to date in Databricks SQL returns null 【发布时间】:2021-06-12 19:17:20 【问题描述】:我有一个表,其中包含名为 Date 的字符串列,其中包含值
(dd-Mon-yy
格式化数据和yyyy-mm-dd
格式化数据)
01-jan-21
01-feb-21
01-mar-21
2021-01-01
2021-02-01
我试图将其转换为所有成员的日期格式yyyy-mm-dd
to_date(date,'yyyy-mm-dd')
但它返回 null 。
如何在 Spark SQL 中将字符串转换为特定的日期格式为yyyy-mm-dd
?
【问题讨论】:
【参考方案1】:由于您有两种不同的日期类型,您需要分别指定它们:
select coalesce(to_date(date,'yyyy-MM-dd'), to_date(date,'dd-MMM-yyyy'))
【讨论】:
【参考方案2】:您需要确定列的格式。在这种情况下,您可以只使用长度:
(case when length(date) = 10 then to_date(upper(date), 'yyyy-MMM-dd')
else to_date(date, 'yyyy-mon-dd')
end)
【讨论】:
这会将所有 yyyy-mm-dd 格式的日期设置为 2020-01-01 另外,2021 年 1 月 1 日仍然输出为 NULL。感谢您的回复【参考方案3】:spark SQL 中我们自己的日期格式化程序
Select date.split('-')[2]||'-'||case when length(date.split('-')[0]) = 1 then '0'||date.split('-')[0] else date.split('-')[0] end || case when length(date.split('-')[1]) = 1 then '0'||date.split('-')[1] else date.split('-')[1] end]
Date = date_column
日期格式yyyy-mm-dd
分隔符可以不同。
没有任何日期格式。
【讨论】:
以上是关于在 Databricks SQL 中将字符串转换为日期返回 null的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Azure Databricks SQL 中将字段值转换为逗号分隔
在scala中将spark决策树模型调试字符串转换为嵌套JSON
在 SQL(Redshift)中将字符串(43677)转换为日期格式 [关闭]