Orcale和MySQL查询某一天的数据的格式区别
今天再搬砖的时候(确实是搬砖,照着我导师的项目写另一个项目),然后,他的项目数据库是MySQL,然后我写的这个项目的数据库是Orcale,他的那句条件语句是这样的
<if test="logDate != null">
and date_format(LOG_DATE, '%Y-%m-%d') = date_format(#{logDate}, '%Y-%m-%d')
</if>
然后我就复制过来小改了一下,因为之前也有遇到过一些MySQL和Orcale的关键字不同的,下面是我改的
<if test="logDate != null">
and to_date(LOG_DATE, 'yyyy-MM-dd') = to_date(#{logDate}, 'yyyy-MM-dd')
</if>
然后就出现了
改了半天,也试了很多其他的方式,比如说我觉得最有可能的这种
select *
from ONLINE_NUM_LOGS
WHERE to_char(LOG_DATE, 'yyyy-MM-dd') = to_char(2022 - 08 - 09, 'yyyy-MM-dd');
报了“[72000][1481] ORA-01481: 无效的数字格式模型”错误
最后发现其实传进来的#{logDate}的格式就是yyyy-MM-dd,试一试不转换格式
<if test="logDate != null and logDate != ''">
and to_char(LOG_DATE, 'yyyy-MM-dd') = #{logDate}
</if>
你猜怎么着,嘿,成了!
其实我还尝试了很多很复杂的方式
select count(ID)
from ONLINE_NUM_LOGS
WHERE LOG_DATE >= to_date(2022-08-06 || ' 00:00:00', 'yyyy-mm-dd hh24:mi:ss')
and LOG_DATE <= to_date(2022-08-06 || ' 23:59:59', 'yyyy-mm-dd hh24:mi:ss');
数据库能跑,但是xml中就不行了。
最后祝大家在搬砖的路上一路畅通