我在Acumatica中有一个定制表,它有一个datetime列。在本专栏中,我还保存了时间。然后,我在这个表上有另一个自定义查询屏幕,并且在这个屏幕上有一个日期范围过滤器。
我的问题是,在过滤器中,用户将只输入日期(而不是时间)。有没有一种干净的方法可以在不考虑时间的情况下在数据库上执行查询?
例如,如果我有一个日期时间设置为01-06-2020 14:00的行。在日期范围筛选器中,用户选择了最多01-06-2020,则不会返回此行(当我使用LessEqual时),但我希望返回它。当然,我可以在筛选端做一些工作,也许可以通过编程更改筛选日期以包括日期,例如01-06-2020 23:59,但我更喜欢仅基于日期而不是时间进行查询。在SQL中,可以按照以下示例进行操作:Best way to compare dates without time in SQL Server
我不确定你是否能在Acumatica中做类似的事情。
发布于 2020-06-20 11:58:39
我们最终使用的方法是修改过滤器,包括额外的2个字段,以便它们在将查询发送到数据库之前相应地调整from/to日期:
#region FromDateQuery
[PXDate(InputMask = "g", DisplayMask = "g")]
public virtual DateTime? FromDateQuery
{
get
{
return (FromDate.HasValue ? FromDate.Value : ToDate);
}
}
public abstract class fromDateQuery : PX.Data.BQL.BqlDateTime.Field<fromDateQuery> { }
#endregion
#region ToDateQuery
[PXDate(InputMask = "g", DisplayMask = "g")]
public virtual DateTime? ToDateQuery
{
get
{
return (ToDate.HasValue ? ToDate.Value.Date.AddDays(1).AddSeconds(-1) : ToDate);
}
}
public abstract class toDateQuery : PX.Data.BQL.BqlDateTime.Field<toDateQuery> { }
#endregionhttps://stackoverflow.com/questions/62139205
复制相似问题