【问题标题】:Converting String to date in Databricks SQL returns null在 Databricks SQL 中将字符串转换为日期返回 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

【问题讨论】:

    标签: sql apache-spark apache-spark-sql


    【解决方案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
      分隔符可以不同。

      没有任何日期格式。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-24
        • 2021-12-25
        相关资源
        最近更新 更多