今天被测试提了几个BUG,传入某个页面的时间功能报错,DEBUG断点查看了一下,发现是时间格式问题。接下来我就来总结一下mybatis中sql时间转换几种方式。
一、字符串转时间格式,适用于sql中定义的是时间格式,页面传过来是字符串格式。
<!--带格式转换-->
to_date(‘2020-03-27 10:20:30’,'yyyy-mm-dd HH:24:mi:ss')
<!--sql格式转换-->
‘2020-03-27 10:20:30’::timestamp(0)
二、时间格式转字符串,适用于sql中字段查出来是字符串格式,页面过来查询条件为时间格式。
<!--带格式转换-->
select to_char(now(),'yyyy-mm-dd HH:24:mi:ss')
<!--不带格式转换-->
now()::text
三、说一下sql时间条件查询的几种方法。
1、CDATA: CDATA 部分由 “<![CDATA[" 开始,由 "]]>” 结束
<![CDATA[
and a.create_time <= to_date(#{d.startDate},'yyyy-mm-dd HH:24:mi:ss')
and a.create_time >= to_date(#{d.endDate},'yyyy-mm-dd HH:24:mi:ss')
]]>
2、>=(大于等于),<=(小于等于)
and a.create_time >= to_date(#{d.date},'yyyy-mm-dd HH:24:mi:ss')
and a.create_time <= to_date(#{d.endDate},'yyyy-mm-dd HH:24:mi:ss')
三、附带说一下sql中字符串转数字的几种方法
<!--不带长度-->
'12345678'::int
<!--带长度-->
to_number('12345678','9999999999999999')