如何检查 MariaDB 中的无效日期
how to check for invalid dates in MariaDB
我想检查 table 中日期时间列中数据的有效性。我尝试使用 ISDATE() 函数,但它在 Maria DB 中不受支持,还有哪些其他选项可以检查 Maria DB 中日期时间列的有效性?
除非启用 sql 模式“ALLOW_INVALID_DATES”,否则 MariaDB 默认检查日期时间值是否有效。 (参见 DATETIME in MariaDB Documentation
由于 MariaDB 不提供验证功能(例如 SQL 服务器),您需要使用转换功能,如果日期时间值不正确,returns NULL:
MariaDB [test]> select id, dt from mytable;
+------+---------------------+
| id | dt |
+------+---------------------+
| 2 | 2001-02-31 00:00:00 |
| 3 | 2002-01-01 13:27:00 |
| 4 | 2020-12-01 00:00:00 |
| 5 | 2022-01-11 16:59:04 |
+------+---------------------+
4 rows in set (0.001 sec)
MariaDB [test]> select id,dt from mytable where dayname(cast(dt as char)) is NULL;
+------+---------------------+
| id | dt |
+------+---------------------+
| 2 | 2001-02-31 00:00:00 |
+------+---------------------+
1 row in set, 1 warning (0.001 sec)
我想检查 table 中日期时间列中数据的有效性。我尝试使用 ISDATE() 函数,但它在 Maria DB 中不受支持,还有哪些其他选项可以检查 Maria DB 中日期时间列的有效性?
除非启用 sql 模式“ALLOW_INVALID_DATES”,否则 MariaDB 默认检查日期时间值是否有效。 (参见 DATETIME in MariaDB Documentation
由于 MariaDB 不提供验证功能(例如 SQL 服务器),您需要使用转换功能,如果日期时间值不正确,returns NULL:
MariaDB [test]> select id, dt from mytable;
+------+---------------------+
| id | dt |
+------+---------------------+
| 2 | 2001-02-31 00:00:00 |
| 3 | 2002-01-01 13:27:00 |
| 4 | 2020-12-01 00:00:00 |
| 5 | 2022-01-11 16:59:04 |
+------+---------------------+
4 rows in set (0.001 sec)
MariaDB [test]> select id,dt from mytable where dayname(cast(dt as char)) is NULL;
+------+---------------------+
| id | dt |
+------+---------------------+
| 2 | 2001-02-31 00:00:00 |
+------+---------------------+
1 row in set, 1 warning (0.001 sec)