2009-05-29 4 views
0

Ich brauche eine HQL zu schaffen, in der Klausel, die die Form hat:Datumzeit und Zeitspanne Arithmetik in TSQL über HQL

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

Die Datetimefield ist vom Typ Datetime

Der TimeSpanField vom Typ BigInt ist (das ist die beste Option?)

die someDateTimeParameter ist ein Datetime

die HQL-Abfrage Schreiben übersetzt, wie oben fast genau in TSQL, aber das ist offensichtlich inv Alid.

  1. Was muss ich tun, damit diese Where-Klausel funktioniert? Gibt es einen HQL-Trick, den ich emplpoy kann?
  2. Wenn nicht, wie schreibe ich die HQL, um eine TSQL-Funktion zu verwenden, um den Vergleich für mich zu tun?
  3. Welche TSQL würde ich brauchen?

Vielen Dank!

Andrew

Antwort

0

I beenden die Zeitspanne als Datetimes von 1.1.1900 wie diese

Offset-Speicher bis
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); } 
}