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-dd 和 yyyy-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