在 BQL 中比较日期(没有时间)
Compare Dates (without time) in BQL
我在 Acumatica 中有一个自定义 table,它有一个日期时间列。在这个专栏中,我也保留了时间。然后我在这个 table 上有另一个自定义查询屏幕,在这个屏幕上有一个日期范围过滤器。
我遇到的问题是,在过滤器中,用户只会输入日期(而不是时间)。有没有一种干净的方法可以在不考虑时间的情况下对数据库执行查询?
例如,如果我有一行日期时间设置为 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 中以某种方式做类似的事情。
我们最终使用的方法是通过包含额外的 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> { }
#endregion
我在 Acumatica 中有一个自定义 table,它有一个日期时间列。在这个专栏中,我也保留了时间。然后我在这个 table 上有另一个自定义查询屏幕,在这个屏幕上有一个日期范围过滤器。
我遇到的问题是,在过滤器中,用户只会输入日期(而不是时间)。有没有一种干净的方法可以在不考虑时间的情况下对数据库执行查询?
例如,如果我有一行日期时间设置为 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 中以某种方式做类似的事情。
我们最终使用的方法是通过包含额外的 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> { }
#endregion