赞
踩
前面(《MySQL 对日期使用 DATE_FORMAT()函数》)我们利用 date_formate() 函数,按照自己希望的格式来输出日期时间。我们从用户界面接收到的信息都是以字符串的形式在进行传递,如何把字符串转换为日期类型进行存储呢?可使用 str_to_date() 函数。
把字符串转换为日期时间需要注意以下几点:
-
拼接日期各个部分;:
区分时间各部分,结果中的时间部分会自动用 :
连接各个部分。str_to_date() 函数的用法和 date_format() 基本一致,只是输出数据的类型不同,前提都需要熟悉输出格式,参照上表。
接下来就上述 5 点注意事项进行举例说明(这一段说明是针对 mysql 的,webide 使用的是兼容 mysql 的 MariaDB,在此环境下进行下面 5 点说明的实验,可能会得到不同结果):
MariaDB [(none)]> select str_to_date('2023050a', '%Y%m%d');
+-----------------------------------+
| str_to_date('2023050a', '%Y%m%d') |
+-----------------------------------+
| 2023-05-00 |
+-----------------------------------+
1 row in set, 1 warning (0.000 sec)
MariaDB [(none)]> select str_to_date('202305', '%Y%m%d');
+---------------------------------+
| str_to_date('202305', '%Y%m%d') |
+---------------------------------+
| 2023-05-00 |
+---------------------------------+
1 row in set (0.000 sec)
结果解析:字符串 202305 低于 8 位,其结果会自动补0至8位。
MariaDB [(none)]> select str_to_date('20231501', '%Y%m%d');
+-----------------------------------+
| str_to_date('20231501', '%Y%m%d') |
+-----------------------------------+
| NULL |
+-----------------------------------+
1 row in set, 1 warning (0.000 sec)
结果解析:20231501 转换为日期后得到的月份是 15,超出有效范围,故结果返回 null。
MariaDB [(none)]> select str_to_date('2023050110', '%Y%m%d');
+-------------------------------------+
| str_to_date('2023050110', '%Y%m%d') |
+-------------------------------------+
| 2023-05-01 |
+-------------------------------------+
1 row in set, 1 warning (0.000 sec)
MariaDB [(none)]> select str_to_date('20230501104523', '%Y%m%d%H%i%S');
+-----------------------------------------------+
| str_to_date('20230501104523', '%Y%m%d%H%i%S') |
+-----------------------------------------------+
| 2023-05-01 10:45:23 |
+-----------------------------------------------+
1 row in set (0.000 sec)
MariaDB [(none)]>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。