to_date işlevi

Şunlar için geçerlidir:onay işareti evet olarak işaretlenmiş Databricks SQL onay işareti evet olarak işaretlenmiş Databricks Runtime

İsteğe bağlı biçimlendirme kullanarak tarihe dönüştürmeyi döndürür expr .

Söz dizimi

to_date(expr [, fmt] )

Bağımsız değişkenler

  • expr: Tarihi temsil eden string ifadesi.
  • fmt: İsteğe bağlı bir BIÇIM STRING ifadesi.

Döndürülenler

BIR TARIH.

Sağlanırsafmt, Datetime desenleriyle uyumlu olmalıdır.

Sağlanmazsa fmt işlevi için cast(expr AS DATE)bir eş anlamlıdır.

fmt hatalı biçimlendirilmişse veya uygulaması iyi biçimlendirilmiş bir tarihle sonuçlanmıyorsa, Azure Databricks bir hata oluşturur.

Hatalı biçimlendirilmiş bir expr hata yerine döndürmek NULL için kullanın try_cast(expr AS DATE) veya Databricks Runtime'da spark.sql.ansi.enabled değerini olarak falseayarlayın.

Yaygın hata nedenleri ve çözümleri

to_date şu durumlarda hataya neden olur:

  • Giriş dizesi beklenen biçimle eşleşmiyor: Belirtilmediğinde fmt girişin veya yyyy-MM-ddyyyy-MM-dd HH:mm:ss biçiminde olması gerekir. Verileriniz veya MM-dd-yyyygibi dd/MM/yyyy farklı bir biçim kullanıyorsa eşleşen fmt bağımsız değişkeni belirtin. Desteklenen tüm desen harfleri için bkz. Tarih saat desenleri .
  • Giriş dizesi geçersiz tarih değerleri içeriyor: Örneğin, ay 13, gün 32veya basamakların beklendiği sayısal olmayan karakterler.
  • Biçim dizesi desteklenmeyen desen harfleri kullanıyor: Desteklenen simgeler ve biçimlendirme kuralları için bkz. Tarih saat desenleri .

Hata koşulları

  • CAST_INVALID_INPUT: Hayır fmt sağlandığında ve giriş dizesi tarih olarak ayrıştırılamadığında oluşturulur.
  • CANNOT_PARSE_TIMESTAMP: Sağlandığında fmt yükseltilir, ancak giriş dizesi verilen biçim düzeniyle eşleşmiyor.

Not

Databricks Runtime'da spark.sql.ansi.enabled ise falseişlev, hatalı biçimlendirilmiş tarihler için hata yerine döndürür NULL .

Örnekler

-- 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