Невозможно привести строку к дате при вставке в Databricks SQL

У меня есть таблица, созданная так:

      CREATE TABLE IF NOT EXISTS MyDataBase.Table (
  `date`     DATE,
  `name`     STRING,
  `isTarget` BOOLEAN
) USING DELTA LOCATION '/mnt/path/to/folder/'

Мне нужно вручную вставить значения в таблицу с помощью SQL. Я пытался сделать это так:

      INSERT INTO CalendrierBancaire.Data VALUES (
  ('2022-01-01', 'New Year', True)
)

Но он не работает с этой ошибкой:

      Error in SQL statement: AnalysisException: cannot resolve 'CAST(`col1` AS DATE)' due to data type mismatch: cannot cast struct<col1:string,col2:string,col3:boolean> to date; line 1 pos 0;

Я также попытался заменить строку даты на:

  • CAST('2022-01-01' AS DATE)
  • to_date('2022-01-01', 'yyyy-MM-dd')

Но ни один из них не работал и возвращал ту же ошибку. Похоже, что синтаксический анализатор SQL хочет преобразовать всю строку в дату, что глупо. У вас есть идеи, как я могу это сделать?

Спасибо.

PS: В реальном использовании мне нужно вставить от 30 до 40 строк, поэтому переменная с выражением CAST может быть болезненной для всех значений.

1 ответ

Похоже, проблема в том, что у вас есть дополнительные скобки вокруг значений, которые вы хотите вставить, поэтому они интерпретируются как один столбец - вам нужно использовать следующий синтаксис (см. документы ):

      INSERT INTO CalendrierBancaire.Data VALUES 
  ('2022-01-01', 'New Year', True)

или если у вас есть несколько строк для вставки, укажите их через запятую:

      INSERT INTO CalendrierBancaire.Data VALUES 
  ('2022-01-01', 'New Year', True),
  ('2022-02-01', 'New Year 2', True)

PS Хотя у меня работает нормально даже с дополнительными скобками

Другие вопросы по тегам