通过HQL实现TSQL中的日期时间和时间跨度算法

通过HQL实现TSQL中的日期时间和时间跨度算法,tsql,hql,Tsql,Hql,我需要创建一个HQL where子句,其形式如下: where tbl1.DateTimeField + tbl2.TimeSpanField >= :someDateTimeParameter DateTime字段的类型为DateTime TimeSpan字段的类型为BigInt(这是最佳选项吗?) someDateTimeParameter是一个DateTime 如上所述编写HQL查询几乎可以准确地转换为TSQL,但是这显然是无效的 我需要做什么才能使where子句起作用?有什么我可

我需要创建一个HQL where子句,其形式如下:

where tbl1.DateTimeField + tbl2.TimeSpanField >= :someDateTimeParameter
DateTime字段的类型为DateTime

TimeSpan字段的类型为BigInt(这是最佳选项吗?)

someDateTimeParameter是一个DateTime

如上所述编写HQL查询几乎可以准确地转换为TSQL,但是这显然是无效的

  • 我需要做什么才能使where子句起作用?有什么我可以玩的HQL技巧吗
  • 如果没有,我如何编写HQL来使用一些TSQL函数为我进行比较
  • 我需要什么TSQL
  • 谢谢

    Andrew

    关于第1和第2部分,请参见以获取答案。
    对于3个使用dateadd或datediff(google表示t-sql+函数名)

    我最终将时间跨度存储为1/1/1900的日期时间偏移量,如下所示

    protected readonly DateTime leadTimeAdjustment = new DateTime(1900, 1, 1);
    
    [Obsolete("For use by NHibernate only.")]
    public virtual DateTime _leadTime { get; protected set; }
    
    public virtual TimeSpan LeadTime
    {
        get { return _leadTime - leadTimeAdjustment; }
        set { _leadTime = leadTimeAdjustment.Add(value); }
    }