SELECT GDI.P_NO pNo, GDI.P_NAME pName, SO.ORG_NAME pCallDepartment, GTI.P_T_NO ptno, GTI.P_T_NAME ptname, SC.COMPANY_ALL_NAME belongCompany, GTI.FPA_WORK fpahlork, GTI.UPDATE_TIME updateTimeFROM XMUAT.G_TASK_INFO GTILEFT JOIN XMUAT.G_DEMAND_INFO GDI ON GTI.P_NO = GDI.P_NOLEFT JOIN XMUAT.S_COMPANY SC ON SC.COMPANY_NO = GTI.BELONG_COMPANYLEFT JOIN XMUAT.S_ORG SO ON SO.ORG_CODE = GDI.P_CALL_DEPARTMENTWHERE GDI.P_NO IS NOT NULL AND GTI.P_IMPLEMENT_STATUS = '05' AND TO_CHAR(GTI.UPDATE_TIME, 'YYYY-MM-DD HH24:MI:SS') > #{sendTime} AND TO_CHAR(GTI.UPDATE_TIME, 'YYYY-MM-DD HH24:MI:SS') <= TO_CHAR(CURRENT_TIMESTAMP, 'YYYY-MM-DD HH24:MI:SS')这个sql中,我的sendtime 是前端传过来的字符串类型的自定义时间,GTI.update_TIME在数据库中是Timestamp类型,在实体类中是String类型,请问这个在xml中的sql是否有错,要怎么修改
时间: 2023-10-03 09:06:52 浏览: 329
您可以将sendTime的值使用TO_TIMESTAMP函数转换为Timestamp类型,然后在比较时间的时候使用Timestamp类型进行比较,示例SQL如下:
```
SELECT GDI.P_NO pNo, GDI.P_NAME pName, SO.ORG_NAME pCallDepartment, GTI.P_T_NO ptno, GTI.P_T_NAME ptname, SC.COMPANY_ALL_NAME belongCompany, GTI.FPA_WORK fpahlork, GTI.UPDATE_TIME updateTime
FROM XMUAT.G_TASK_INFO GTI
LEFT JOIN XMUAT.G_DEMAND_INFO GDI ON GTI.P_NO = GDI.P_NO
LEFT JOIN XMUAT.S_COMPANY SC ON SC.COMPANY_NO = GTI.BELONG_COMPANY
LEFT JOIN XMUAT.S_ORG SO ON SO.ORG_CODE = GDI.P_CALL_DEPARTMENT
WHERE GDI.P_NO IS NOT NULL
AND GTI.P_IMPLEMENT_STATUS = '05'
AND GTI.UPDATE_TIME > TO_TIMESTAMP(#{sendTime},'YYYY-MM-DD HH24:MI:SS')
AND GTI.UPDATE_TIME <= CURRENT_TIMESTAMP
```
同时需要注意,如果您使用MyBatis框架,可以在Mapper接口中使用@Param注解来指定参数名,如下所示:
```java
List<MyEntity> queryByTime(@Param("sendTime") String sendTime);
```
这样,在XML中使用`#{sendTime}`就可以正确匹配到对应的参数。
阅读全文