批量更新生成的语句会将DateTimeOffset CAST为 varchar 返回

SqlSugar 沟通中
4 161
该叫什么 jiujiu 发布于2周前
悬赏:0 飞吻

批量更新生成的Update会将DateTimeOffset类型的update_time 数据 【CAST('2026-01-19T14:06:41.4122510+08:00' AS varchar)】,产生报错 【42804: 字段 "update_time" 的类型为 timestamp with time zone, 但表达式的类型为 character varying】

postgresql 数据库,  "update_time" timestamptz(6)


        public async Task<bool> UpdateColumsAsync<TEntity>(List<TEntity> entity, string[] whereColumns, string[] updateColumns) where TEntity : class, new()

        {

            IUpdateable<TEntity> up = _db.Updateable(entity);

            if (updateColumns != null && updateColumns.Length > 0)

            {

                up = up.UpdateColumns(updateColumns);

            }

            up = up.WhereColumns(whereColumns);

            return await up.ExecuteCommandHasChangeAsync();

        }


[Sql]:UPDATE  "public"."mon_device_status"  SET "tag_value"=T."tag_value","update_by_name"=T."update_by_name","update_time"=T."update_time" FROM              (VALUES

 (CAST('PLAN01' AS varchar),CAST('Read.RequestPick' AS varchar),CAST('1' AS varchar),CAST('APP_MCS_VISCOSE_00' AS varchar),CAST('2026-01-19T14:06:41.4122510+08:00' AS varchar),CAST('2013081916663795712' AS int8))

  ) AS T ("device_code","tag_identity","tag_value","update_by_name","update_time","id") WHERE "public"."mon_device_status"."id"=T."id" AND "public"."mon_device_status"."tag_identity"=T."tag_identity" AND "public"."mon_device_status"."device_code"=T."device_code"

  ;

[Pars]:

[Name]:@device_code [Value]:PLAN01 [Type]:String

[Name]:@tag_identity [Value]:Read.RequestPick [Type]:String

[Name]:@tag_value [Value]:1 [Type]:String

[Name]:@update_by_name [Value]:APP_MCS_VISCOSE_00 [Type]:String

[Name]:@update_time [Value]:2026/1/19 14:06:41 +08:00 [Type]:DateTimeOffset

[Name]:@id [Value]:2013081916663795712 [Type]:Int64

热忱回答4

  • 什么库

    0 回复
  • @fate sta:postgreSQL


    0 回复
  • image.png

    这个我生成的SQL。不能重现你说的。

    0 回复
  •    db.Updateable(userInfo).UseParameter().ExecuteCommand();  

       或者你用UseParameter 方式插入

    0 回复