Sqlite 时间过滤问题 返回

SqlSugar
6 111

sqlite对datetime字段支持有点问题

where 语句中不能直接使用类似 "CREATE_DATE" = '2021-09-14 00:00:00.000' 这样的语句,会无法查询出数据

如果

正确的用法应该是 datetime("CREATE_DATE") = datetime('2021-09-14 00:00:00.000')

热忱回答6

  • ORM默认是不会加函数转换的你可以手动 convert.todatetime(it.CREATE_DATE)==convert.todatetime("2021-09-14 00:00:00.000'")

    0 回复
  • 如果表和实体设计合理是不需要额外转换的

    0 回复
  • 问题找到了,orm 插入的时候是参数化形式,如果是datetime.now.date sqlite内部实际存的值是2021-09-14 00:00:00 , 这个时候查询按2021-09-14 00:00:00.000 就会查不到

    我的解决办法是在 OnExecutingChangeSql 中强制转换为yyyy-MM-dd HH:mm:ss.fff 形式

    0 回复
  • @你的名字:你可以用 it.xxx.Date==DateTime.Now.Date 这样就查同一天的,就不会受时分秒影响

    0 回复
  • 查询到时没什么,条件随便怎么加都可以,我发现这个问题是在更新时候

    Updateable(array).UpdateColumns(p => new { p.Status }).WhereColumns(p => new { p.Id, p.CreateDate })

    0 回复
  • @你的名字:这个记下来了,后面会去验证

    0 回复