生成的查询语句,日期类型怎么可以不要毫秒? 返回

SqlSugar 沟通中
11 246

例如:

var sugarSql = SugarSqlFactory.Create();

var sqlStr = sugarSql.Queryable<Entity.Inbound>().Where(a => a.InboundDate >= start).ToSqlString();

生成的语句是: SELECT `ID`,`InboundDate` FROM `Inbound`  WHERE ( `InboundDate` >= '2025-01-24 00:00:00.000' ) 

不要毫秒部分 .000,要怎么做?


 SqlSugarClient Db = new SqlSugarClient(new ConnectionConfig()

 {

     ConnectionString = "连接符字串",

     DbType = DbType.Sqlite,

     IsAutoCloseConnection = true,

     MoreSettings = new ConnMoreSettings()

     {

         DisableMillisecond=true

     }

 },

已经设置了DisableMillisecond,但是没有效果

热忱回答11

  • .Where(a => a.InboundDate.Date >= start.Date)

    0 回复
  • 你是条件不需要还是 返回给前端不需要。描述清楚

    0 回复
  • 返回给前端一般是序列化处理

    0 回复
  • var start = DateTime.Parse("2025-01-01 00:00:00");

    因为 数据库有些日期时间是没有毫秒的,比如库里的时间是 2025-01-01 00:00:00 这样(因为国家地区时间的问题,数据库的日期时间用字符串类型,但是程序里还是用datetime类型),  

     sugarSql 生成的语句是,比较的时间是 2025-01-01 00:00:00.000   

    这样造成的后果是查不出结果。 因为  2025-01-01 00:00:00.000   要大于 2025-01-01 00:00:00

    0 回复
  • .Where(a => a.InboundDate.Date >= start.Date)

    这样就行了

    0 回复
  • 如果是sqlite  查不出数据一般是数据库时间格式有问题,清空数据全部改用ORM插入就可以查出

    0 回复
  • 另外打印的SQL是不准的,orm是参数化处理,还有疑问提供完整的DEMO

    https://www.donet5.com/Home/Doc?typeId=2366  按模版提供

    0 回复
  • 我是把生成的sql直接拿navcat执行的,也查不出。 原因我刚才说了  因为  2025-01-01 00:00:00.000 是大于  2025-01-01 00:00:00的

    我想要的结果就是, sugarSql 生成的语句,能不能去掉毫秒部分? 

    0 回复
  • 因为特殊的原因,我不需要用整个ORM,只需要用生成sql语句那部分

    0 回复
  • 因为  2025-01-01 00:00:00.000 是大于  2025-01-01 00:00:00,你上面回复说用 .date 就是只取日期部分,我举的例子刚好是00时,如果不是零时,比如2025-01-01 20:05:00 就不能那样用了

    0 回复
  • 如果是sqlite  查不出数据一般是数据库时间格式有问题,清空数据全部改用ORM插入就可以查出

    另外打印的SQL是不准的,orm是参数化处理,还有疑问提供完整的DEMO

    https://www.donet5.com/Home/Doc?typeId=2366  按模版提供


    0 回复