From 434bb50a6515a4399c47c001a3e1e842f322792a Mon Sep 17 00:00:00 2001 From: yangj1211 Date: Mon, 26 Feb 2024 11:22:47 +0800 Subject: [PATCH 1/2] add str_to_date --- .../Datetime/str-to-date.md | 67 +++++++++++++++++++ .../Datetime/to-date.md | 51 +++++++++++--- .../matrixone-function-list.md | 1 + mkdocs.yml | 1 + 4 files changed, 109 insertions(+), 11 deletions(-) create mode 100644 docs/MatrixOne/Reference/Functions-and-Operators/Datetime/str-to-date.md diff --git a/docs/MatrixOne/Reference/Functions-and-Operators/Datetime/str-to-date.md b/docs/MatrixOne/Reference/Functions-and-Operators/Datetime/str-to-date.md new file mode 100644 index 0000000000..e4884a7da3 --- /dev/null +++ b/docs/MatrixOne/Reference/Functions-and-Operators/Datetime/str-to-date.md @@ -0,0 +1,67 @@ +# **STR_TO_DATE()** + +## **函数说明** + +`STR_TO_DATE()` 函数按照指定日期或时间显示格式,将字符串转换为日期或日期时间类型,为 [`TO_DATE()`](to-date.md) 的近义词。 + +格式字符串可以包含文字字符和以%开头的格式说明符。format 中的字面字符与格式说明符必须与 str 匹配,支持表达式。如果不能按照 format 解析 str 或者其中任何一个参数为 NULL,`STR_TO_DATE` 函数将返回 NULL。 + +有关可以使用的格式说明符,请参阅 [`DATE_FORMAT()`](date-format.md) 函数描述。 + +## **函数语法** + +``` +> STR_TO_DATE(str,format) +``` + +## **参数释义** + +| 参数 | 说明 | +| ---- | ---- | +| str | 要格式化为日期的字符串 (输入字符串) | +| format | 要使用的格式字符串 | + +## **示例** + +```sql +mysql> SELECT STR_TO_DATE('2022-01-06 10:20:30','%Y-%m-%d %H:%i:%s') as result; ++---------------------+ +| result | ++---------------------+ +| 2022-01-06 10:20:30 | ++---------------------+ +1 row in set (0.00 sec) + +mysql> SELECT STR_TO_DATE('09:30:17','%h:%i:%s'); ++---------------------------------+ +| str_to_date(09:30:17, %h:%i:%s) | ++---------------------------------+ +| 09:30:17 | ++---------------------------------+ +1 row in set (0.00 sec) + +-- format 参数支持表达式 +mysql> SELECT str_to_date('2008-01-01',replace('yyyy-MM-dd','yyyy-MM-dd','%Y-%m-%d')) as result; ++------------+ +| result | ++------------+ +| 2008-01-01 | ++------------+ +1 row in set (0.00 sec) + +--STR_TO_DATE 函数在根据格式字符串 format 解析输入字符串 str 时,忽略输入字符串 str 末尾的额外字符 +mysql> SELECT STR_TO_DATE('25,5,2022 extra characters','%d,%m,%Y'); ++---------------------------------------------------+ +| str_to_date(25,5,2022 extra characters, %d,%m,%Y) | ++---------------------------------------------------+ +| 2022-05-25 | ++---------------------------------------------------+ +1 row in set (0.00 sec) + +mysql> SELECT STR_TO_DATE('2022','%Y'); ++-----------------------+ +| str_to_date(2022, %Y) | ++-----------------------+ +| NULL | ++----------------------- +``` diff --git a/docs/MatrixOne/Reference/Functions-and-Operators/Datetime/to-date.md b/docs/MatrixOne/Reference/Functions-and-Operators/Datetime/to-date.md index b381c9ea48..75aa2518ae 100644 --- a/docs/MatrixOne/Reference/Functions-and-Operators/Datetime/to-date.md +++ b/docs/MatrixOne/Reference/Functions-and-Operators/Datetime/to-date.md @@ -2,9 +2,11 @@ ## **函数说明** -``TO_DATE()`` 函数按照指定日期或时间显示格式,将字符串转换为日期或日期时间类型。 +`TO_DATE()` 函数按照指定日期或时间显示格式,将字符串转换为日期或日期时间类型。 -格式字符串可以包含文字字符和以%开头的格式说明符。format 中的字面字符必须匹配 str 中的字面字符。format 中的格式说明符必须匹配 str 中的日期或时间部分。 +格式字符串可以包含文字字符和以%开头的格式说明符。format 中的字面字符与格式说明符必须与 str 匹配,如果不能按照 format 解析 str 或者其中任何一个参数为 NULL,`TO_DATE` 函数将返回 NULL。 + +有关可以使用的格式说明符,请参阅 [`DATE_FORMATE()`](date-format.md) 函数描述。 ## **函数语法** @@ -14,12 +16,10 @@ ## **参数释义** -| Arguments | Description | +| 参数 | 说明 | | ---- | ---- | -| str | Required.
如果 ``str`` 为 ``NULL``,则函数返回 ``NULL``。
如果从 ``str`` 中的 ``date`` 或 ``datetime`` 值不合法,则 ``TO_DATE()`` 将返回 ``NULL`` 并产生警告。| -| format | 可选参数。表示返回值格式的格式字符串。
如果省略 format,则返回一个 ``DATETIME`` 值。
如果 format 为空,则返回 ``NULL``。
如果 format 已存在指定格式,则返回值为 ``VARCHAR``。| - -说明:格式字符串可以包含文字字符和以 *%* 开头的格式说明符。``format`` 中的字面字符必须匹配 ``str`` 中的字面字符。``format`` 中的格式说明符必须匹配 ``str`` 中的日期或时间部分。 +| str | 要格式化为日期的字符串 (输入字符串) | +| format | 要使用的格式字符串 | ## **示例** @@ -30,9 +30,38 @@ mysql> SELECT TO_DATE('2022-01-06 10:20:30','%Y-%m-%d %H:%i:%s') as result; +---------------------+ | 2022-01-06 10:20:30 | +---------------------+ -1 row in set (0.00 sec) -``` +1 row in set (0.00 sec) + +mysql> SELECT TO_DATE('2022/11/01','%Y/%m/%d'); ++-------------------------------+ +| to_date(2022/11/01, %Y/%m/%d) | ++-------------------------------+ +| 2022-11-01 | ++------------------------- + +-- format 参数支持表达式 +mysql> SELECT to_date('2008-01-01',replace('yyyy-MM-dd','yyyy-MM-dd','%Y-%m-%d')) as result; ++------------+ +| result | ++------------+ +| 2008-01-01 | ++------------+ +1 row in set (0.01 sec) -## **限制** +--TO_DATE 函数在根据格式字符串 format 解析输入字符串 str 时,忽略输入字符串 str 末尾的额外字符 +mysql> SELECT TO_DATE('25,5,2022 extra characters','%d,%m,%Y'); ++-----------------------------------------------+ +| to_date(25,5,2022 extra characters, %d,%m,%Y) | ++-----------------------------------------------+ +| 2022-05-25 | ++-----------------------------------------------+ +1 row in set (0.00 sec) -目前 date 格式只支持 `yyyy-mm-dd` 和 `yyyymmdd` 的数据格式。 +mysql> SELECT TO_DATE('2022','%Y'); ++-------------------+ +| to_date(2022, %Y) | ++-------------------+ +| NULL | ++-------------------+ +1 row in set (0.00 sec) +``` diff --git a/docs/MatrixOne/Reference/Functions-and-Operators/matrixone-function-list.md b/docs/MatrixOne/Reference/Functions-and-Operators/matrixone-function-list.md index 7a289dc4ee..f9ffa7070f 100644 --- a/docs/MatrixOne/Reference/Functions-and-Operators/matrixone-function-list.md +++ b/docs/MatrixOne/Reference/Functions-and-Operators/matrixone-function-list.md @@ -41,6 +41,7 @@ | [MINUTE()](./Datetime/minute.md) |返回时间参数的分钟| | [MONTH()](./Datetime/month.md) |返回日期参数的月份| | [SECOND()](./Datetime/second.md) |返回时间参数的秒数| +| [STR_TO_DATE()](./Datetime/str-to-date.md) |按照指定日期或时间显示格式,将字符串转换为日期或日期时间类型| | [TIME()](./Datetime/time.md) |提取时间或日期时间的时间部分并将其作为字符串返回| | [TIMEDIFF()](./Datetime/timediff.md) |返回两个时间参数之间的差值| | [TIMESTAMP()](./Datetime/timestamp.md) |将日期或日期时间参数作为日期时间值返回| diff --git a/mkdocs.yml b/mkdocs.yml index e29707220f..60b50c9058 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -477,6 +477,7 @@ nav: - MINUTE(): MatrixOne/Reference/Functions-and-Operators/Datetime/minute.md - MONTH(): MatrixOne/Reference/Functions-and-Operators/Datetime/month.md - SECOND(): MatrixOne/Reference/Functions-and-Operators/Datetime/second.md + - STR_TO_DATE(): MatrixOne/Reference/Functions-and-Operators/Datetime/str-to-date.md - TIME(): MatrixOne/Reference/Functions-and-Operators/Datetime/time.md - TIMEDIFF(): MatrixOne/Reference/Functions-and-Operators/Datetime/timediff.md - TIMESTAMP(): MatrixOne/Reference/Functions-and-Operators/Datetime/timestamp.md From fb529883c560dbf696bd690fbf9e81edf2fe04b0 Mon Sep 17 00:00:00 2001 From: yangj1211 Date: Mon, 26 Feb 2024 11:46:37 +0800 Subject: [PATCH 2/2] update to_date/str_to_date --- .../Reference/Functions-and-Operators/Datetime/str-to-date.md | 2 +- .../Reference/Functions-and-Operators/Datetime/to-date.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/MatrixOne/Reference/Functions-and-Operators/Datetime/str-to-date.md b/docs/MatrixOne/Reference/Functions-and-Operators/Datetime/str-to-date.md index e4884a7da3..b277cd4299 100644 --- a/docs/MatrixOne/Reference/Functions-and-Operators/Datetime/str-to-date.md +++ b/docs/MatrixOne/Reference/Functions-and-Operators/Datetime/str-to-date.md @@ -2,7 +2,7 @@ ## **函数说明** -`STR_TO_DATE()` 函数按照指定日期或时间显示格式,将字符串转换为日期或日期时间类型,为 [`TO_DATE()`](to-date.md) 的近义词。 +`STR_TO_DATE()` 函数按照指定日期或时间显示格式,将字符串转换为日期或日期时间类型,与 [`TO_DATE()`](to-date.md) 同义。 格式字符串可以包含文字字符和以%开头的格式说明符。format 中的字面字符与格式说明符必须与 str 匹配,支持表达式。如果不能按照 format 解析 str 或者其中任何一个参数为 NULL,`STR_TO_DATE` 函数将返回 NULL。 diff --git a/docs/MatrixOne/Reference/Functions-and-Operators/Datetime/to-date.md b/docs/MatrixOne/Reference/Functions-and-Operators/Datetime/to-date.md index 75aa2518ae..f2de2cf689 100644 --- a/docs/MatrixOne/Reference/Functions-and-Operators/Datetime/to-date.md +++ b/docs/MatrixOne/Reference/Functions-and-Operators/Datetime/to-date.md @@ -2,7 +2,7 @@ ## **函数说明** -`TO_DATE()` 函数按照指定日期或时间显示格式,将字符串转换为日期或日期时间类型。 +`TO_DATE()` 函数按照指定日期或时间显示格式,将字符串转换为日期或日期时间类型,与 [`STR_TO_DATE()`](str-to-date.md) 同义。 格式字符串可以包含文字字符和以%开头的格式说明符。format 中的字面字符与格式说明符必须与 str 匹配,如果不能按照 format 解析 str 或者其中任何一个参数为 NULL,`TO_DATE` 函数将返回 NULL。