有時候前端傳過來的時間是字符串類型的,如果直接使用,會報錯。
如在XML里這樣使用:select * from table where create_time >= #{startTime},其中startTime為前端傳過來的時間。
在運行時會報錯:
ERROR: operator does not exist: timestamp without time zone > character varying
解決辦法:使用時間轉換函數獎字符串轉為時間類型:
to_date(#{startTime},'YYYY-MM-DD HH24:MI:SS')
上面是sql就可以寫為: select * from table where create_time >= to_date(#{startTime},'YYYY-MM-DD HH24:MI:SS') 這樣就不會報錯了
需要注意的是:上面的時間格式為:'YYYY-MM-DD HH24:MI:SS' ,HH24代表使用24小時,如果不加24,就代表使用12小時制,這個時候如果傳過來startTime 的值為‘2019-06-15 00:00:00’,
這個時候也會報錯:org.postgresql.util.PSQLException: ERROR: hour "0" is invalid for the 12-hour clock
另外不像java的時間格式可以寫為 ‘YYYY-MM-dd HH:mm:SS’,mybatis的xml如果寫為這樣也會報錯:
Cause: org.postgresql.util.PSQLException: ERROR: conflicting values for "MM" field in formatting string
所以記得最好寫成: 'YYYY-MM-DD HH24:MI:SS'
end
