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

SqlSugar 老数据
7 374
// 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

  • fate sta fate sta VIP0
    2023/5/26
      //获取原生SQL推荐 5.1.4.63  性能OK
      UtilMethods.GetNativeSql(sql,pars)

    用这个输出SQL

    0 回复
  • fate sta fate sta VIP0
    2023/5/26

    贴出来

    0 回复
  • MoRan813 MoRan813 VIP0
    2023/5/26

    @fate sta

    我用的ISugarQueryable.ToSqlString()

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

    0 回复
  • MoRan813 MoRan813 VIP0
    2023/5/26

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

    0 回复
  • MoRan813 MoRan813 VIP0
    2023/5/26

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

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

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

    0 回复
  • fate sta fate sta VIP0
    2023/5/26

    升级ORM就好了 ,这修复过了

    0 回复