Apache spark 字符串到日期的格式转换导致空数据块

Apache spark 字符串到日期的格式转换导致空数据块,apache-spark,apache-spark-sql,Apache Spark,Apache Spark Sql,我已将日期保存为以下格式: +-------------------------+ | timex (varchar) | +-------------------------+ | 20200303 | +-------------------------+ 我希望输出/转换值为Databricks SQL中的日期/时间格式 应该是: +-------------------------+ | timex |

我已将日期保存为以下格式:

+-------------------------+
| timex    (varchar)      |
+-------------------------+
| 20200303                |
+-------------------------+
我希望输出/转换值为Databricks SQL中的日期/时间格式

应该是:

+-------------------------+
| timex                   |
+-------------------------+
| 2020-03-03 00:00:00.000 |
+-------------------------+
尝试:

  • 选择时间戳(timex)
    -->结果为1970 xx xx xx
  • 选择时间戳(timex,'yyyy/MM/dd HH:MM:ss.ssssss')
    -->表示参数1中的数据类型应为字符串或日期
  • 选择时间戳(转换为字符串形式的timex),'yyyyy/MM/dd HH:MM:ss.ssssss')
    -->NULL
  • 选择到日期(timex)
    -->空
  • 在SQL中等效-
    convert(datetime,cast(timex作为nvarchar),103)

    如果我使用cast(timex作为字符串)作为xx-->它可以工作 但是,我使用时间戳(cast(timex作为字符串),'yyyyymmdd')作为t-->它给出null


    我还尝试将字符串格式化为_timestamp(格式化_string(“%8d”,cast(timex as string)),“yyyyymmdd”)-->getting exception:IllegalFormatConversionException

    您需要使用
    转换为_timestamp
    转换为时间戳,然后使用
    日期
    转换为所需格式:

    select date_format(to_timestamp(format_string('%8d', timex), 'yyyyMMdd'), 'yyyy-MM-dd HH:mm:ss.SSS')
    from mytable;
    

    不,这在Databricks中也是NULL。timex可能是一个整数。试着先选线。请参阅编辑后的答案。我尝试将-date_格式(to_timestamp(转换为字符串形式的timex)、'yyyyMMdd')、'yyyy-MM-dd HH:MM:ss.SSS')作为xyz。您是否可以显示
    select cast(timex作为字符串)
    ?您是否可以显示
    select date\u格式(to\u timestamp('20200303','yyyyMMdd'),'yyyy-MM-dd HH:MM:ss.SSS')的结果