sqlite中比较时间出错 返回
SqlSugar
待处理
1
131
酸柠萌 发布于1周前
悬赏:5 飞吻
两个表的时间设置相同
public DateTime Time { get; set; }在查询中比较时间相等,总是为false
设置 ColumnDataType="INTEGER" 也不行
使用 SqlFunc.UNIX_TIMESTAMP 比较时间就正确
在DB Browser中查看两表数据,发现其中一个表中的时间末尾有“.000”
这种不一致的原因是什么?有办法规避吗?
热忱回答(1)
-
酸柠萌 VIP0
1周前sqlite列的初始化类型与实际存储类型不一定相同,即使设置了 ColumnDataType="INTEGER" 实际存储还是TEXT
设置SqlParameterDbType,将DateTime转换为timestamp可以避免解决上述问题
但这样又会引起json转换问题:
var ret1 = await table.AsQueryable().Select(t => t).ToListAsync(); var ret2 = await table.AsQueryable().Select(t => new { Time = t }).ToListAsync();第二个查询报错:Newtonsoft.Json.JsonReaderException:“Unexpected character encountered while parsing value: 1. Path 'Time.Time', line 1, position 30.”
需对属性再应用 JsonConverter,将timestamp转回DateTime另外内置的 Newtonsoft.Json.Converters.UnixDateTimeConverter 好像是按照UTC时间来转换的
0 回复