首页 > 数据库 >postgresql + mybatis传入时间参数的问题

postgresql + mybatis传入时间参数的问题

时间:2023-03-07 09:24:35浏览次数:60  
标签:postgresql last timestamp 传入 TIMESTAMP update between mybatis query

在使用mybatis传入日期参数进行动态时间判断的时候,

如果传入参数为String, 使用mybatis时, 在mapper中以下几种写法是错误的

<if test="query.beginDate != null and query.endDate != ''" >

	AND ccf.last_update_timestamp between #{query.beginDate} AND #{query.endDate}

</if>

<if test="query.beginDate != null and query.endDate != ''" >

	AND ccf.last_update_timestamp between TIMESTAMP #{query.beginDate} AND TIMESTAMP            #{query.endDate}

</if>

<if test="query.beginDate != null and query.endDate != ''" >

	AND ccf.last_update_timestamp between TIMESTAMP ${query.beginDate} AND TIMESTAMP ${query.endDate}

</if>

我们看到, 直接在可视化工具里用SQL写

ccf.last_update_timestamp between TIMESTAMP '2019-12-13' AND TIMESTAMP '2019-12-13'

甚至去掉 TIMESTAMP 都是可以的, pgSQL可以自动把字符串给你转换成日期格式, 然后作比较

但是在mapper文件中这么写就不可以了, 它会提示你varchar类型不能和日期类型进行比较

正确的做法是使用DATE()函数把字符串手动转换成日期

<if test="query.beginDate != null and query.endDate != ''" >

​	AND ccf.last_update_timestamp between DATE(#{query.beginDate}) AND DATE(#{query.endDate})

</if>

相应地, 如果传入的参数不是一个yyyy-MM-dd的日期格式, 而是一个yyyy-MM-dd HH:mm:ss的格式则是使用TO_TIMESTAMP()函数

<if test="query.beginDate != null and query.endDate != ''" >

AND ccf.last_update_timestamp between TO_TIMESTAMP(#{query.beginDate},'yyyy-MM-dd hh24:mi:ss') AND TO_TIMESTAMP(#{query.endDate},'yyyy-MM-dd hh24:mi:ss)

</if>

来自 <https://gitee.com/macro_joe/codes/5exhwivrpdkfb7t69yaj149>

标签:postgresql,last,timestamp,传入,TIMESTAMP,update,between,mybatis,query
From: https://www.cnblogs.com/qds1401744017/p/17186917.html

相关文章

  • 三天吃透mybatis面试八股文
    本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校......
  • 13_MyBatis
    MyBatis1.什么是MyBatis?是一款优秀的持久层框架,用于简化JDBC开发持久层负责将数据保存到数据库的那一层代码javaee三层架构:表现层,业务层,持久层框架:半成品软件,是......
  • 【Mybatis】【SQL执行过程】【二】Mybatis源码解析-Mapper代理执行逻辑
    1 前言上节我们回顾了下Mapper接口的解析存放以及代理的入口和创建代理的过程,那么这节我们就来看下MapperProxy的代理执行逻辑。2 源码分析2.1 invoke代理逻......
  • postgreSQL 查询表结构
    SELECTDISTINCTC.relnameAStabname,obj_description(C.oid)ASCOMMENTFROM(SELECTDISTINCTtablename,schemanameFROMpg_tablesWHEREPOSITION('_2'IN......
  • 银河麒麟v10 sp1 安装 PostgreSQL 11.16
    一、安装环境   操作系统:银河麒麟v10 sp3 x86_64   内核版本:   PostgreSQL版本:11.16二、安装过程2.1下载源码包创建目录mkdir-p/tools/postgresql......
  • Mybatis中的resultMap理解
    在xml文件中写SQL语句,若只是单独用到一张表,一般用resultType就够了,对于下划线和驼峰形式的转换一般在框架内配置一下即可实现;但是在实际操作过程中往往会涉及到多表操作,一......
  • mybatis-plus返回json数据不出来
      使用 autoResultMap属性值,自动映射json类型  @TableName(opensnewwindow)描述:表名注解,标识实体类对应的表使用位置:实体类 @TableName("sys_user"......
  • Oracle使用MyBatis插入一条数据自动递增主键并返回主键值
    前期准备--创建t_table表createtablet_user(idnumber(10)primarykey,namevarchar2(20),agenumber(3));commentontablet_useris'用户信息表';......
  • PostgreSQL技术大讲堂 - Part 9:pg_hba.conf配置
     PostgreSQL从小白到专家,是从入门逐渐能力提升的一个系列教程,内容包括对PG基础的认知、包括安装使用、包括角色权限、包括维护管理、、等内容,希望对热爱PG、学习PG的同......
  • Mybatis映射文件配置
    <?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEmapperPUBLIC"-//mybatis.org//DTDMapper3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mappernam......