跳转至

Convert a string to date(将字符串转换为日期(Convert a string to date))

Supported in: Batch, Faster, Streaming

Returns the date given a formatted string in accordance to the Java DateTimeFormatter. The default formats are yyyy-MM-dd and yyyy-MM-dd'T'HH:mm:ss.SSSXXX. The formats are run in order, the first matching format will be returned.

Expression categories: Cast, Datetime

Declared arguments

  • String: String column to parse to date.
    Expression\
  • optional Formats: Input a date format (e.g. yyyy-MM-dd or MM/dd/yyyy).
    List\>

Output type: Date

Examples

Example 1: Base case

Description: Date formats are optional

Argument values:

  • String: 2020-04-28
  • Formats: null

Output: 2020-04-28


Example 2: Base case

Description: Date formats are optional

Argument values:

  • String: 2020-04-28T01:00:00.000Z
  • Formats: null

Output: 2020-04-28


Example 3: Base case

Description: Dates parsed with a single format.

Argument values:

  • String: 28-2020-04
  • Formats: [dd-yyyy-MM]

Output: 2020-04-28


Example 4: Base case

Description: Multiple formats used to parse dates

Argument values:

  • String: 28-2020-04
  • Formats: [yyyy-MM-dd, dd-yyyy-MM]

Output: 2020-04-28


Example 5: Base case

Description: If dates are missing leading zeros, they are still parsed correctly using this "yyyy-M-d" format.

Argument values:

  • String: date
  • Formats: [yyyy-M-d]
date Output
2020-04-08 2020-04-08
2020-4-8 2020-04-08
2020-10-10 2020-10-10

Example 6: Base case

Description: Strings can contain a timestamp

Argument values:

  • String: 28-2020-04 10:12:00 +01
  • Formats: [dd-yyyy-MM HH\:mm:ss X]

Output: 2020-04-28


Example 7: Base case

Description: Timezone can change the date.

Argument values:

  • String: 28-2020-04 10:12:00 +11
  • Formats: [dd-yyyy-MM HH\:mm:ss X]

Output: 2020-04-27


Example 8: Null case

Description: Null columns remain null

Argument values:

  • String: null
  • Formats: [dd-yyyy-MM]

Output: null


Example 9: Edge case

Description: Invalid data is parsed to null

Argument values:

  • String: 28-20201-14
  • Formats: [dd-yyyy-MM]

Output: null


Example 10: Edge case

Description: Incorrect formats parse everything to null

Argument values:

  • String: 04-2020-28
  • Formats: [dd-yyyy-MM]

Output: null


Example 11: Edge case

Description: Year-only formats are not supported

Argument values:

  • String: 2023
  • Formats: [yyyy]

Output: null



中文翻译


将字符串转换为日期(Convert a string to date)

支持:批处理(Batch)、快速处理(Faster)、流处理(Streaming)

根据 Java DateTimeFormatter 规范,将格式化字符串转换为日期。默认格式为 yyyy-MM-ddyyyy-MM-dd'T'HH:mm:ss.SSSXXX。系统按顺序尝试这些格式,返回第一个匹配的格式对应的日期。

表达式类别: 类型转换(Cast)、日期时间(Datetime)

声明的参数

  • 字符串(String): 需要解析为日期的字符串列。
    表达式\
  • 可选 格式(Formats): 输入日期格式(例如 yyyy-MM-dd 或 MM/dd/yyyy)。
    列表\<字面量\>

输出类型: 日期(Date)

示例

示例 1:基础情况

描述: 日期格式为可选参数

参数值:

  • 字符串: 2020-04-28
  • 格式: null

输出: 2020-04-28


示例 2:基础情况

描述: 日期格式为可选参数

参数值:

  • 字符串: 2020-04-28T01:00:00.000Z
  • 格式: null

输出: 2020-04-28


示例 3:基础情况

描述: 使用单一格式解析日期。

参数值:

  • 字符串: 28-2020-04
  • 格式: [dd-yyyy-MM]

输出: 2020-04-28


示例 4:基础情况

描述: 使用多种格式解析日期

参数值:

  • 字符串: 28-2020-04
  • 格式: [yyyy-MM-dd, dd-yyyy-MM]

输出: 2020-04-28


示例 5:基础情况

描述: 如果日期缺少前导零,使用 "yyyy-M-d" 格式仍可正确解析。

参数值:

  • 字符串: date
  • 格式: [yyyy-M-d]
date 输出
2020-04-08 2020-04-08
2020-4-8 2020-04-08
2020-10-10 2020-10-10

示例 6:基础情况

描述: 字符串可包含时间戳

参数值:

  • 字符串: 28-2020-04 10:12:00 +01
  • 格式: [dd-yyyy-MM HH\:mm:ss X]

输出: 2020-04-28


示例 7:基础情况

描述: 时区可能会改变日期。

参数值:

  • 字符串: 28-2020-04 10:12:00 +11
  • 格式: [dd-yyyy-MM HH\:mm:ss X]

输出: 2020-04-27


示例 8:空值情况

描述: 空列保持为空

参数值:

  • 字符串: null
  • 格式: [dd-yyyy-MM]

输出: null


示例 9:边界情况

描述: 无效数据解析为空

参数值:

  • 字符串: 28-20201-14
  • 格式: [dd-yyyy-MM]

输出: null


示例 10:边界情况

描述: 错误格式会将所有内容解析为空

参数值:

  • 字符串: 04-2020-28
  • 格式: [dd-yyyy-MM]

输出: null


示例 11:边界情况

描述: 不支持仅包含年份的格式

参数值:

  • 字符串: 2023
  • 格式: [yyyy]

输出: null