0

次の形式の HQL where 句を作成する必要があります。

where tbl1.DateTimeField + tbl2.TimeSpanField >= :someDateTimeParameter

DateTimeField は DateTime 型です

TimeSpanField は BigInt 型です (これが最適なオプションですか?)

someDateTimeParameter は DateTime です

上記のように HQL クエリを記述すると、ほぼ正確に TSQL に変換されますが、これは明らかに無効です。

  1. このwhere句を機能させるにはどうすればよいですか? 私が使用できるHQLトリックはありますか?
  2. そうでない場合、TSQL 関数を使用して比較を行う HQL をどのように記述すればよいでしょうか。
  3. どのような TSQL が必要ですか?

ありがとう!

アンドリュー

4

2 に答える 2

1

1 と 2 については、HQL で日付/時刻演算を実行しますか?を参照してください。答えのために。3 の場合は、dateadd または datediff を使用します (t-sql + 関数名の場合は google)。

于 2009-06-24T11:11:10.073 に答える
0

このように、タイムスパンを1900年1月1日からのオフセット日時として保存することになりました

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); }
}
于 2009-06-24T12:58:48.967 に答える