Получить строку M / d / yyyy или MM / dd / yyyy в формате строки yyyyMMdd

#apache-spark-sql

#apache-spark-sql

Вопрос:

У меня есть строка в формате M/d/yyyy or MM/dd/yyyy , и я работаю над преобразованием этой строки в другую строку другого формата yyyyMMdd , и это некоторые методы, которые я тестировал только для получения начальных форматов строк, но все они выдаются как нули в sql spark:

 SELECT 
  current_date() AS RightNow ---Returns today's date
  , date_format("8/15/2019","MM-dd-yyyy") AS FormatDate  ---Returns null
  , TO_DATE("8/15/2019") AS OtherFormat ---Returns null
  , CAST("8/15/2019" as date) Casted ---Returns null
  , CAST(UNIX_TIMESTAMP('8/15/2019', 'yyyyMMdd') AS TIMESTAMP) TestFour ---Returns null
  

Что странно, так это то, что когда я читаю другие ответы, я вижу, что некоторые пользователи говорят, что вывод — это даты, но все они возвращают null. Ввод — это строка, а вывод из sql должен быть строкой. T

Ответ №1:

Прочитав ваш пост немного более внимательно…

to_date("8/15/2019","MM/dd/yyyy") преобразует вашу строку в фактическую дату. Второй аргумент — это формат ввода ваших данных.

Чтобы преобразовать ее в желаемый формат строки:

 date_format(to_date("8/15/2019","MM/dd/yyyy"),"yyyyMMdd")
  

Второй аргумент для date_format — это желаемый формат вывода. Первым аргументом должна быть фактическая дата.