MySQL字符串使用STR_TO_DATE()函数举例说明
作者:梁辰兴
在 MySQL 中,STR_TO_DATE()函数用于将一个字符串转换为日期或时间格式,它可以帮助我们将字符串解析为日期类型,以便在查询中进行比较、计算和显示,这篇文章主要给大家介绍了关于MySQL字符串使用STR_TO_DATE()函数的相关资料,需要的朋友可以参考下
STR_TO_DATE() 函数
前面(《MySQL 对日期使用 DATE_FORMAT()函数》)我们利用 date_formate() 函数,按照自己希望的格式来输出日期时间。我们从用户界面接收到的信息都是以字符串的形式在进行传递,如何把字符串转换为日期类型进行存储呢?可使用 str_to_date() 函数。
把字符串转换为日期时间需要注意以下几点:
- 待转换字符串中只能出现数字,否则返回结果为 null;
- 如果格式字符串仅包含日期,则待转字符串至少需要 8 位数字,转换时默认前四位是年份,中间两位是月份,最后两位是日期,格式字符串无需使用 - 区分日期各部分,结果会自动用
-
拼接日期各个部分; - 转换后日期时间必须有效,否则返回结果为 null;
- 如果被转字符串超出 8 位且格式字符串中无时间格式,则自动取前 8 位转换为日期;
- 格式字符串可包含时间格式,格式字符串无需使用
:
区分时间各部分,结果中的时间部分会自动用:
连接各个部分。
str_to_date() 函数的用法和 date_format() 基本一致,只是输出数据的类型不同,前提都需要熟悉输出格式,参照上表。
接下来就上述 5 点注意事项进行举例说明(这一段说明是针对 mysql 的,webide 使用的是兼容 mysql 的 MariaDB,在此环境下进行下面 5 点说明的实验,可能会得到不同结果):
1. 待转换字符串中出现数字以外的,自动去除字符,然后添加0至8位转换为日期
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)
2. 如果格式字符串仅包含日期,则待转字符串至少需要 8 位数字
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位。
3. 转换后日期时间必须有效,否则返回结果为 null
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。
4. 如果被转字符串超出 8 位且格式字符串中无时间格式,则自动取前 8 位转换为日期
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)
5. 格式字符串可以包含时间格式
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)]>
总结
到此这篇关于MySQL字符串使用STR_TO_DATE()函数举例说明的文章就介绍到这了,更多相关MySQL字符串STR_TO_DATE()函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!