当前位置: 代码网 > it编程>数据库>Mysql > MySQL字符串使用STR_TO_DATE()函数举例说明

MySQL字符串使用STR_TO_DATE()函数举例说明

2024年05月27日 Mysql 我要评论
str_to_date() 函数前面(《mysql 对日期使用 date_format()函数》)我们利用 date_formate() 函数,按照自己希望的格式来输出日期时间。我们从用户界面接收到的

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()函数内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com