跳到主要内容

TO_DATE

引入或更新: v1.1.39

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

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

  • 将整数转换为日期:将整数解释为 Unix 纪元(1970 年 1 月 1 日午夜)之前(对于负数)或之后(对于正数)的天数。请注意,日期值的范围从 1000-01-019999-12-31。如果运行 "SELECT TO_DATE(9999999999999999999)",Databend 将返回错误。

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

另请参阅:TO_TIMESTAMP

语法

-- 将时间戳格式字符串转换
TO_DATE('<timestamp_expr>')

-- 将整数转换
TO_DATE(<integer>)

-- 使用给定格式将字符串转换
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'))
├───────────────────────────────┼───────────────────────────────────┤
DATEDATE
└───────────────────────────────────────────────────────────────────┘

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

SELECT DATE_FORMAT(TO_DATE('2022-01-02')) AS dt, TYPEOF(dt);

┌─────────────────────────┐
│ dt │ typeof(dt)
├────────────┼────────────┤
2022-01-02VARCHAR
└─────────────────────────┘

示例

示例 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-012022-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-022022-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))
DateDateDateDate
├────────────┼────────────────┼────────────────┼────────────────────┤
1970-01-021970-01-021969-12-311969-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-252022-12-25
└───────────────────────────────────────────────────────────────────────────┘