一,日期类型的比较问题
数据库中存储日期的字段为timestamp类型,而Java对象中对应属性的类型的Date类型,两者进行比较时,需要进行一定的格式转换。
案例:数据库中存储的日期存在时分秒,现在要查询某个时间(某年某月某日)的数据,直接比较查询可能因为时分秒的不同导致查询到的数据为空,需要将DB中的日期格式和Java对象中对应属性的日期格式都转为“yyyy-MM-dd”,再进行比较。
解决过程:通过to_date()函数将数据库中日期转换为‘yyyy-MM-dd’,Java接收前端的日期格式可能也有问题,我先用JsonFormat(pattern = "yyyy-MM-dd")注解放在Vo的对应字段上,但是发现没有用,接收到前端的数据还是存在时分秒,最后使用jdbcType=DATE放在sql中解决,实例代码如下:
select * from table where to_date(insert_data,'yyyy-MM-dd') = #{insertDate,jdbcType=DATE}
运行后执行发现继续报错,查看日志信息:Postgresql to_date(timestamp without time zone, unknown)不存在 Hint: 没有匹配指定名称和参数类型的函数. 您也许需要增加明确的类型转换.
报错问题是Postgressql中to_date()函数的使用问题,正确使用方法:
select * from table where to_date(insert_data::text,'yyyy-MM-dd') = #{insertData,jdbcType=DATE} 或者 select * from table where to_date(cast(insert_data as TEXT),'yyyy-MM-dd') = #{insertData,jdbcType=DATE}
第二种方法尝试成功,第二种方法也是网上的方法,自测使用!
标签:Postgresql,MM,dd,jdbcType,yyyy,日期,使用,date From: https://www.cnblogs.com/linlin227/p/17493877.html