to_date fungsi

Berlaku untuk:centang ditandai ya Databricks SQL centang ditandai ya Databricks Runtime

Menampilkan expr cast ke tanggal menggunakan pemformatan opsional.

Sintaks

to_date(expr [, fmt] )

Argumen

  • expr: Ekspresi STRING yang mewakili tanggal.
  • fmt: Ekspresi STRING format opsional.

Mengembalikan

TANGGAL.

Jika fmt disediakan, itu harus sesuai dengan pola Tanggalwaktu.

Jika fmt tidak disediakan, fungsi tersebut adalah sinonim untuk cast(expr AS DATE).

Jika fmt salah bentuk atau aplikasinya tidak menghasilkan tanggal yang terbentuk dengan baik, Azure Databricks menimbulkan kesalahan.

Untuk mengembalikan NULL alih-alih kesalahan saat expr salah format, gunakan try_cast(expr AS DATE) atau, di Databricks Runtime, atur spark.sql.ansi.enabled ke false.

Penyebab kesalahan umum dan resolusi

to_date menimbulkan kesalahan ketika:

  • String input tidak cocok dengan format yang diharapkan: Jika fmt tidak ditentukan, input harus dalam yyyy-MM-dd format atau yyyy-MM-dd HH:mm:ss . Jika data Anda menggunakan format yang berbeda, seperti dd/MM/yyyy atau MM-dd-yyyy, tentukan argumen yang fmt cocok. Lihat Pola tanggalwaktu untuk semua huruf pola yang didukung.
  • String input berisi nilai tanggal yang tidak valid: Misalnya, karakter bulan 13, hari 32, atau non-numerik di mana digit diharapkan.
  • String format menggunakan huruf pola yang tidak didukung: Lihat Pola tanggalwaktu untuk simbol dan aturan pemformatan yang didukung.

Kondisi kesalahan

  • CAST_INVALID_INPUT: Dimunculkan ketika tidak fmt ada yang disediakan dan string input tidak dapat diurai sebagai tanggal.
  • CANNOT_PARSE_TIMESTAMP: Dimunculkan saat fmt disediakan tetapi string input tidak cocok dengan pola format yang diberikan.

Catatan

Dalam Databricks Runtime, jika spark.sql.ansi.enabled adalah false, fungsi mengembalikan alih-alih NULL kesalahan untuk tanggal yang salah format.

Contoh

-- Parsing with default format (yyyy-MM-dd)
> SELECT to_date('2009-07-30 04:17:52');
 2009-07-30

-- Parsing with an explicit format
> SELECT to_date('2016-12-31', 'yyyy-MM-dd');
 2016-12-31

-- Parsing a non-default date format
> SELECT to_date('31/12/2016', 'dd/MM/yyyy');
 2016-12-31

-- Error: input is not a valid date string
> SELECT to_date('not-a-date');
  Error: CAST_INVALID_INPUT

-- Error: input format doesn't match the default yyyy-MM-dd format
> SELECT to_date('31/12/2016');
  Error: CAST_INVALID_INPUT

-- Fix: supply a fmt that matches the input format
> SELECT to_date('31/12/2016', 'dd/MM/yyyy');
  2016-12-31

-- Use try_cast to return NULL instead of an error for invalid input
> SELECT try_cast('not-a-date' AS DATE);
  NULL