跳到主要内容

TO_MONDAY

描述

将日期或带时间的日期向下舍入到最近的星期一。作为一种特殊情况,日期参数 1970-01-01、1970-01-02、1970-01-03 和 1970-01-04 返回日期 1970-01-01

语法

to_monday(`<date_or_time_expr>`)

参数

参数描述
<datetime_or_date>输入的日期时间值,支持输入 date/datetime 类型,具体 datetime 和 date 格式请查看 datetime 的转换date 的转换

返回值

返回类型为 DATE(格式 YYYY-MM-DD),表示输入日期所在周的星期一。

  • 若输入为 1970-01-01、1970-01-02、1970-01-03、1970-01-04 中的任一日期,固定返回 1970-01-01;
  • 若输入为 NULL,返回 NULL;

举例

--2022-09-10是星期六,返回所在周的星期一(2022-09-05)
SELECT TO_MONDAY('2022-09-10') AS result;
+------------+
| result |
+------------+
| 2022-09-05 |
+------------+

-- 输入为 datetime 类型
SELECT TO_MONDAY('2022-09-10 12:22:15') AS result;
+------------+
| result |
+------------+
| 2022-09-05 |
+------------+

---返回 1970 之前的日期所在的一周中的周一
SELECT TO_MONDAY('1022-09-10') AS result;
+------------+
| result |
+------------+
| 1022-09-09 |
+------------+

--星期一当天的日期:返回自身
SELECT TO_MONDAY('2023-10-09') AS result; -- 2023-10-09是星期一
+------------+
| result |
+------------+
| 2023-10-09 |
+------------+

---特殊日期
SELECT TO_MONDAY('1970-01-02'),TO_MONDAY('1970-01-01'),TO_MONDAY('1970-01-03'),TO_MONDAY('1970-01-04');
+-------------------------+-------------------------+-------------------------+-------------------------+
| TO_MONDAY('1970-01-02') | TO_MONDAY('1970-01-01') | TO_MONDAY('1970-01-03') | TO_MONDAY('1970-01-04') |
+-------------------------+-------------------------+-------------------------+-------------------------+
| 1970-01-01 | 1970-01-01 | 1970-01-01 | 1970-01-01 |
+-------------------------+-------------------------+-------------------------+-------------------------+


---输入 NULL,返回 NULL
SELECT TO_MONDAY(NULL) AS result;
+--------+
| result |
+--------+
| NULL |
+--------+