lambda 查询表达式中 DateOnly 转 DateTime 的 Bug 返回
SqlSugar
沟通中
2
209

悬赏:0 飞吻
表字段 Time 的类型为 DateTime
查询参数date 的类型为 DateOnly?
var list = await sugarScope.QueryableWithAttr<EmployeeConsumeRecord>() .Includes(i => i.Employee) .Where(i => i.VerifierId == LoginId && i.VerifyPointId == verifierinfo.PointId) .WhereIF(date.HasValue, i => i.Time >= date!.Value.ToDateTime(TimeOnly.MinValue) && i.Time <= date!.Value.ToDateTime(TimeOnly.MaxValue)) //.WhereIF(date.HasValue, i => SqlFunc.Between(i.Time, date!.Value.ToDateTime(TimeOnly.MinValue), date!.Value.ToDateTime(TimeOnly.MaxValue))) .WhereIF(!date.HasValue, i => i.Time >= DateTime.Today && i.Time < DateTime.Today.AddDays(1)) .ToListAsync();
生成SQL:
sql:SELECT `Id`,`EmployeeId`,`VerifyPointId`,`Amount`,`VerifierId`,`Time`,`Remark`,`Status`,`RecordId`,`IsDeleted`,`CreateTime`,`ModifyTime`,`Ver` FROM `EmployeeConsumeRecord` WHERE (( `VerifierId` = @VerifierId0 ) AND ( `VerifyPointId` = @VerifyPointId1 )) AND (( `Time` >= CAST(@MethodConst2 AS DATETIME)) AND ( `Time` <= CAST(@MethodConst4 AS DATETIME))) AND ( `IsDeleted` = @IsDeleted6 ) params: @VerifierId0:1867935166433988608 @VerifyPointId1:3 @MethodConst2:2025/1/9 0:00:00 @MethodConst3:00:00:00 @MethodConst4:2025/1/9 0:00:00 @MethodConst5:23:59:59.9999999 @IsDeleted6:0
正确的应该是:
@MethodConst2:2025/1/9 00:00:00 @MethodConst4:2025/1/9 23:59:59.9999999
热忱回答(2)
-
fate sta VIP0
2025/1/9date!.Value.ToDateTime(TimeOnly.MinValue)
从外面处理好在传进来
0 回复 -
fate sta VIP0
2025/1/9todatetime会走SQL函数
0 回复