📣
TiDB Cloud Premium 开放公测中。为企业级工作负载提供无限扩展、即时弹性伸缩和高级安全保障。此页面由 AI 自动翻译,英文原文请见此处。

TO_DATE



将表达式转换为日期,包括:

  • 将时间戳格式的字符串转换为日期:从给定字符串中提取日期。

  • 将整数转换为日期:将该整数解释为 Unix 纪元(1970 年 1 月 1 日午夜)之前(负数)或之后(正数)的天数。请注意,Date 值的范围是 1000-01-01 到 9999-12-31。如果你运行 "SELECT TO_DATE(9999999999999999999)",TiDB Cloud Lake 会返回错误。

  • 使用指定格式将字符串转换为日期:该函数接受两个参数,根据第二个字符串中指定的格式将第一个字符串转换为日期。要在 TiDB Cloud Lake 中自定义日期和时间格式,可以使用格式说明符。有关支持的格式说明符完整列表,请参阅日期和时间格式化。

另请参阅:TO_TIMESTAMP

语法

-- Convert a timestamp-format string TO_DATE('<timestamp_expr>') -- Convert an integer TO_DATE(<integer>) -- Convert a string using the given format TO_DATE('<string>', '<format>')

别名

返回类型

该函数返回格式为 "YYYY-MM-DD" 的日期:

SELECT TYPEOF(TO_DATE('2022-01-02')), TYPEOF(STR_TO_DATE('2022-01-02')); ┌───────────────────────────────────────────────────────────────────┐ │ typeof(to_date('2022-01-02')) │ typeof(str_to_date('2022-01-02')) │ ├───────────────────────────────┼───────────────────────────────────┤ │ DATE │ DATE │ └───────────────────────────────────────────────────────────────────┘

要将返回的日期再转换回字符串,请使用 DATE_FORMAT 函数:

SELECT DATE_FORMAT(TO_DATE('2022-01-02')) AS dt, TYPEOF(dt); ┌─────────────────────────┐ │ dt │ typeof(dt) │ ├────────────┼────────────┤ │ 2022-01-02 │ VARCHAR │ └─────────────────────────┘

示例

示例 1:转换时间戳格式的字符串

SELECT TO_DATE('2022-01-02T01:12:00+07:00'), STR_TO_DATE('2022-01-02T01:12:00+07:00'); ┌─────────────────────────────────────────────────────────────────────────────────┐ │ to_date('2022-01-02t01:12:00+07:00') │ str_to_date('2022-01-02t01:12:00+07:00') │ ├──────────────────────────────────────┼──────────────────────────────────────────┤ │ 2022-01-01 │ 2022-01-01 │ └─────────────────────────────────────────────────────────────────────────────────┘ SELECT TO_DATE('2022-01-02'), STR_TO_DATE('2022-01-02'); ┌───────────────────────────────────────────────────┐ │ to_date('2022-01-02') │ str_to_date('2022-01-02') │ ├───────────────────────┼───────────────────────────┤ │ 2022-01-02 │ 2022-01-02 │ └───────────────────────────────────────────────────┘

示例 2:转换整数

SELECT TO_DATE(1), STR_TO_DATE(1), TO_DATE(-1), STR_TO_DATE(-1); ┌───────────────────────────────────────────────────────────────────┐ │ to_date(1) │ str_to_date(1) │ to_date((- 1)) │ str_to_date((- 1)) │ │ Date │ Date │ Date │ Date │ ├────────────┼────────────────┼────────────────┼────────────────────┤ │ 1970-01-02 │ 1970-01-02 │ 1969-12-31 │ 1969-12-31 │ └───────────────────────────────────────────────────────────────────┘

示例 3:使用给定格式转换字符串

SELECT TO_DATE('12/25/2022','%m/%d/%Y'), STR_TO_DATE('12/25/2022','%m/%d/%Y'); ┌───────────────────────────────────────────────────────────────────────────┐ │ to_date('12/25/2022', '%m/%d/%y') │ str_to_date('12/25/2022', '%m/%d/%y') │ ├───────────────────────────────────┼───────────────────────────────────────┤ │ 2022-12-25 │ 2022-12-25 │ └───────────────────────────────────────────────────────────────────────────┘

文档内容是否有帮助?