场景:MyBatis插入mysql
问题描述
mybatis接收字符串类型数据,但是mysql数据库设计该字段为datetime类型
解决方案:
MySQL将字符串转为datetime类型的方法
方法1:使用str_to_date()函数
format格式 | 描述 |
---|---|
%a | 工作日缩写名称(周日至周六) |
%b | 缩写的月份名称(1月至12月) |
%C | 数字月份名称(0到12) |
%D | 作为数值的月中的某一天,后跟后缀(第1,第2,第3,…) |
%d | 作为数值的月份日期(01到31) |
%e | 每月的某一天作为数值(0到31) |
%f | 微秒(000000至999999) |
%H | 小时(00到23) |
%h | 小时(00到12) |
%I | 小时(00到12) |
%i | 分钟(00至59) |
%j | 一年中的某一天(001至366) |
%k | 小时(0到23) |
%l | 小时(1到12) |
%M | 月份名称(1月至12月) |
%m | 月份名称作为数值(00到12) |
%p | 上午或下午 |
%r | 时间为12小时AM或PM格式(hh:mm:ss AM / PM) |
%S | 秒(00到59) |
%s | 秒(00到59) |
%T | 24小时格式的时间(hh:mm:ss) |
%U | 星期日是星期的第一天(00到53)的星期 |
%u | 星期一是一周的第一天(00到53)的星期 |
%V | 星期日是星期的第一天(01到53)的星期。与%X一起使用 |
%v | 星期一是星期的第一天(01到53)的星期。与%X一起使用 |
%W | 工作日名称全部(周日至周六) |
%w | 星期日= 0和星期六= 6的星期几 |
%X | 星期日是一周的第一天的一周。与%V一起使用 |
%x | 星期一是一周的第一天的一周。与%V一起使用 |
%Y | 年份为数字,4位数值 |
%y | 年份为数字,2位数值 |
STR_TO_DATE()函数扫描输入字符串来匹配格式字符串。格式字符串可能包含以百分比(%)字符开头的文字字符和格式说明符。
举例:SELECT STR_TO_DATE(“2022,6,14 10,40,10”, “%Y,%m,%d %h,%i,%s”);
方法2: 使用CAST() 函数
CAST() 函数用于类型转换,将(任何类型的)值转换为指定的数据类型。将字符串转为datetime类型的语法
CAST(字符串值 AS datetime)
示例: SELECT CAST(“2008.08.09 08:09:30” AS DATETIME);
cast(#{item.signDate,jdbcType=VARCHAR} as DATETIME),