时间更新的问题 返回

SqlSugar 沟通中
15 275
该叫什么 fry 发布于2周前
悬赏:0 飞吻

ScreenShot_2025-10-29_133942_112.png



1:mysql8.x数据库

2:创建时间设置为可空,且忽略更新

当CreateTime在数据库中为null时,更新数据后,CreateTime变成“1900-01-01 00:00:00” (这种情况下是错误,应该继续为null)

当CreateTime在数据库中为正常的日期时,更新数据后,CreateTime不变  (这种情况下是对的)


可能是mysql设置默认值优先级高于了IsOnlyIgnoreUpdate=true



热忱回答15

  • image.png

    有这个特性 正常情况下是不会更新的,提供具体代码或者DEMO

    0 回复
  • fry fry VIP0
    2周前

    @fate sta:CreateTime有值,确实是不会更新,但是CreateTime为null时,更新就变成"1900-01-01 00:00:00"

    0 回复
  • image.png

    0 回复
  • 不能重现你说的。需要DEMO

    0 回复
  • fry fry VIP0
    2周前

    @fate sta:你的这个写法不对,你在表里面手动加一条数据,CreateTime设置为null,然后去更新这个数据(给CreateTime赋值)

    0 回复
  • 看生成的SQL就知道了,如果SET没这列是不会更新的。

    0 回复
  •  建议你写个空DEMO自测,能重现发出来,不能重现就看你项目 和DEMO差异

    0 回复
  • fry fry VIP0
    2周前

    @fate sta:这个问题不大,一般CreateTime一定有值,所以更新赋值不会变,之前的脏数据CreatTime为null,导致的更新后变成"1900-01-01 00:00:00"

    问题不大,暂不影响使用

    0 回复
  • fry fry VIP0
    2周前

    @fate sta:不好复现,需要手动添加一条数据(CreateTime为空),然后再去更新这个数据,这就是全部步骤

    0 回复
  • fry fry VIP0
    2周前

    @fate sta:set里面有CreateTime,有赋值

    0 回复
  • @fry:你这个可能是codefirst配置了默认值引起的。以前是NULL数据,在配置默认值全部将NULL 更新了 

     

    0 回复
  • 大概率不是UPDATE引起的。

    0 回复
  • fry fry VIP0
    2周前

    @fate sta:可空,没有默认值

    0 回复
  • fry fry VIP0
    2周前

    @fate sta:我再找找原因

    0 回复
  • fry fry VIP0
    1周前

    @fate sta:目前这个问题找不到原因,日期类型没有配置默认值,Aop也没有做特殊处理,这种目前没有啥影响,可以忽略不解决

    MoreSetting里面有个设置日期最小时间是"1900-01-01",不知道是不是这个原因

    image.png



    0 回复