批量更新生成的语句会将DateTimeOffset CAST为 varchar 返回
jiujiu 发布于2周前
批量更新生成的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)
-
fate sta VIP0
2周前什么库
0 回复 -
jiujiu VIP0
2周前@fate sta:postgreSQL
0 回复 -
fate sta VIP0
2周前
这个我生成的SQL。不能重现你说的。
0 回复 -
fate sta VIP0
2周前db.Updateable(userInfo).UseParameter().ExecuteCommand();
或者你用UseParameter 方式插入
0 回复