Linux下Mysql数据DateTime类型比较问题 返回

SqlSugar
7 103
该叫什么 MoRan813 发布于2周前
悬赏:0 飞吻
// UpdateDate是DateTime类型
// rq.updatestarttime是String类型
.WhereIF(!string.IsNullOrEmpty(rq.updatestarttime), (i) => i.UpdateDate >= SqlFunc.ToDate(rq.updatestarttime))

在Linux下

转换出来的sql会变成

AND (`UpdateDate` >= CAST(N'05/25/2023 23:59:59' AS DATETIME))

在MySql中 CAST无法转换 dd/MM/yyyy格式的时间字符串


这个问题该怎么解决

热忱回答7

  •   //获取原生SQL推荐 5.1.4.63  性能OK
      UtilMethods.GetNativeSql(sql,pars)

    用这个输出SQL

    0 回复
  • 贴出来

    0 回复
  • @fate sta

    我用的ISugarQueryable.ToSqlString()

    这个条件转确实是转换成这样的

    0 回复
  • @fate sta:我的Sugar版本是5.1.3.40,我确是没有这个方法image.png

    0 回复
  • @fate sta:Ubuntu和Aonlis下都有这个问题,应该是跟Linux有关。

    0 回复
  • .WhereIF(!string.IsNullOrEmpty(rq.updatestarttime), " UpdateDate >= CAST(@updatestarttime AS DATETIME) ",new {updatestarttime = DateTime.Parse(rq.updatestarttime).ToString("yyyy/MM/dd hh:mm:ss")})

    我是用这种方法规避了因为操作系统导致的日期转换不正确的问题

    0 回复
  • 升级ORM就好了 ,这修复过了

    0 回复