zclllyybb commented on code in PR #2816:
URL: https://github.com/apache/doris-website/pull/2816#discussion_r2346976008
##########
i18n/zh-CN/docusaurus-plugin-content-docs/current/sql-manual/sql-functions/scalar-functions/date-time-functions/str-to-date.md:
##########
@@ -31,31 +33,110 @@ STR_TO_DATE(<datetime_str>, <format>)
|`yyyy-MM-dd HH:mm:ss`|`%Y-%m-%d %H:%i:%s`|
## 返回值
-- 返回一个 DATETIME 类型值,表示转换后的日期时间。
-- 如果输入的 `<datetime_str>` 或 `<format>` 无效,函数返回 NULL。
+返回一个 DATETIME 类型值,表示转换后的日期时间。
+
+日期时间匹配方式,用两根指针指向两字符串起始位置
+1. 当遇格式字符串到 % 符号时,会根据 %下一个字母匹配时间字符对应的时间部分,若不匹配(如 %Y 匹配日期时间部分却为 10:10:10 或者 %
不支持解析的字符如 %*),则返回 NULL,匹配成功则移动到下一个字符解析。
+2. 任意时刻两串中的任一个遇到空格字符,直接跳过解析下一个字符串
+3. 当遇到普通字母的匹配,则查看两字符串现在指针所指向的字符是否相等,不相等则返回 NULL,相等则解析下一个字符
+4. 当任日期指针指向字符串末尾时,若日期时间只包含日期部分,则格式字符串会检查是否包含匹配时间部分的字符(如 %H),若包含,则会设置时间部分为
00:00:00。
+5. 当格式字符串指向末尾时,匹配结束。
+6. 最后检查匹配时间部分是否合法(如月份必须在 [1,12] 区间内),如果不合法,则返回 NULL,合法则返回解析出的日期时间
+
+
+- 若 <datetime_str> 与 <format> 格式不匹配(如字符串为 2023/13/01 而格式为 %Y-%m-%d),返回 NULL;
+- 若任一参数为 NULL,返回 NULL;
+- 若 <format> 为空字符串,返回 NULL;
+- 若 <datetime_str> 缺少时间部分(仅日期),解析后时间部分默认为 00:00:00;若缺少日期部分(仅时间),日期部分默认为
0000-00-00(无效日期,返回 NULL)。
## 举例
-将常见的日期时间字符串转换为 DATETIME 类型
```sql
-SELECT STR_TO_DATE('2025-01-23 12:34:56', '%Y-%m-%d
%H:%i:%s'),STR_TO_DATE('2025-01-23 12:34:56', 'yyyy-MM-dd HH:mm:ss');
-```
-```text
-+---------------------------------------------------------+-----------------------------------------------------------+
-| str_to_date('2025-01-23 12:34:56', '%Y-%m-%d %H:%i:%s') |
str_to_date('2025-01-23 12:34:56', 'yyyy-MM-dd HH:mm:ss') |
-+---------------------------------------------------------+-----------------------------------------------------------+
-| 2025-01-23 12:34:56.000000 | 2025-01-23
12:34:56.000000 |
-+---------------------------------------------------------+-----------------------------------------------------------+
-```
-其他
+-- 使用标准格式符解析
+SELECT STR_TO_DATE('2025-01-23 12:34:56', '%Y-%m-%d %H:%i:%s') AS result;
++---------------------+
+| result |
++---------------------+
+| 2025-01-23 12:34:56 |
++---------------------+
-```sql
-select STR_TO_DATE('200442 Monday', '%X%V %W'),STR_TO_DATE('2023','%Y');
-```
-```text
-+-----------------------------------------+---------------------------+
-| str_to_date('200442 Monday', '%X%V %W') | str_to_date('2023', '%Y') |
-+-----------------------------------------+---------------------------+
-| 2004-10-18 | 2023-01-01 |
-+-----------------------------------------+---------------------------+
+-- 使用代用格式解析
+SELECT STR_TO_DATE('2025-01-23 12:34:56', 'yyyy-MM-dd HH:mm:ss') AS result;
++---------------------+
+| result |
++---------------------+
+| 2025-01-23 12:34:56 |
++---------------------+
+
+-- 仅日期字符串(时间默认 00:00:00)
+SELECT STR_TO_DATE('20230713', 'yyyyMMdd') AS result;
++---------------------+
+| result |
++---------------------+
+| 2023-07-13 00:00:00 |
++---------------------+
+
+-- 仅时间字符串(日期无效,返回空字符串)
+SELECT STR_TO_DATE('15:30:45', '%H:%i:%s') AS result;
Review Comment:
得记录个jira
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]