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_CHAR(TO_TIMESTAMP( '2023-03-20 16:00:00','YYYY-MM-DD HH24:MI:SS') ,'YYYY-MM-DD HH24:MI:SS') AND GTI.UPDATE TIME <= TO_CHAR(CURRENT_TIMESTAMP) ,'YYYY-MM-DD HH24:MI:SS' )这条是在xml中的sql语句,UPDATE_TIME在返回的实体类是字符串类型,在数据库中保存的是时间戳,那么这个语句有没有错,如果有怎么改
时间: 2024-02-05 20:13:29 浏览: 76
这条 SQL 语句存在一些语法错误和逻辑错误。
首先,GTI.UPDATE_TIME 是一个时间戳类型的字段,你需要将其转化为字符串类型才能和字符串类型的时间 '2023-03-20 16:00:00' 进行比较。所以第一个错误是:
```
GTI.UPDATE_TIME > TO_CHAR(TO_TIMESTAMP('2023-03-20 16:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'YYYY-MM-DD HH24:MI:SS')
```
应该改为:
```
TO_CHAR(GTI.UPDATE_TIME, 'YYYY-MM-DD HH24:MI:SS') > '2023-03-20 16:00:00'
```
其次,逻辑错误在于 AND GTI.UPDATE TIME <= TO_CHAR(CURRENT_TIMESTAMP) ,'YYYY-MM-DD HH24:MI:SS' 这一段。应该将 ','YYYY-MM-DD HH24:MI:SS' 移到 TO_CHAR 函数的第二个参数中。
因此,你可以将整个 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 TO_CHAR(GTI.UPDATE_TIME, 'YYYY-MM-DD HH24:MI:SS') > '2023-03-20 16:00:00'
AND TO_CHAR(GTI.UPDATE_TIME, 'YYYY-MM-DD HH24:MI:SS') <= TO_CHAR(CURRENT_TIMESTAMP, 'YYYY-MM-DD HH24:MI:SS')
```
阅读全文