time.Time 类型,tag 为 deleted not null 的字段在 insert 的时候,会将 UTC 时区的 time.Time{} 转换为数据库时区,导致查询不到 #2208

Open
opened 2023-01-10 07:23:09 +00:00 by formiko · 1 comment

这是 insert 时对 deleted 字段的处理:
image
image
这是 select 时对 deleted 字段的处理:
image

总觉得select的时候无视了时区只查 deleted_at = 0001-01-01 00:00:00 的数据,那对称的话,insert的时候就不该把tag 为 deleted 的字段的值 time.Time{} 的时区指定为 local 变为 0001-01-01 08:05:43 导致 select 查不出来

把该字段设置为可以为null的确可以避开这个问题本身,但是会导致无法对该软删除字段建联合唯一索引了,因为会使得联合唯一索引失效。

这是 insert 时对 deleted 字段的处理: ![image](/attachments/5b63076b-afd1-4cf5-8c4a-08c5831313b9) ![image](/attachments/fc2c5a15-fdbf-41f1-a246-a5a7a1057895) 这是 select 时对 deleted 字段的处理: ![image](/attachments/f9a550dc-657d-4ec0-8b4d-b6ae7eafe73c) 总觉得select的时候无视了时区只查 deleted_at = 0001-01-01 00:00:00 的数据,那对称的话,insert的时候就不该把tag 为 deleted 的字段的值 time.Time{} 的时区指定为 local 变为 0001-01-01 08:05:43 导致 select 查不出来 把该字段设置为可以为null的确可以避开这个问题本身,但是会导致无法对该软删除字段建联合唯一索引了,因为会使得联合唯一索引失效。
601 KiB
937 KiB
1.2 MiB
Contributor

fix in #2295

fix in https://gitea.com/xorm/xorm/pulls/2295
Sign in to join this conversation.
No Milestone
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: xorm/xorm#2208
No description provided.