2011-05-27 128 views
3

是否有可能在除SQL和HQL之外的任何其他nhibernate查詢方法中請求使用current_timestamp?在NHibernate QueryOver語法中使用current_timestamp

我正在考慮製作某種類型的DbDateTime的IUserType類或其他東西來解決問題,但不知道如何完成它。

任何人有任何想法?我想要什麼

例如:

session.QueryOver<User>() 
     .Where(u => u.CreatedOn > current_timestamp) 
     .List(); 

回答

2

您可以像這樣QueryOver API中使用IProjection和SQL函數:

var result = session.QueryOver<User>() 
      .Where(Restrictions.GtProperty(
       Projections.Property<User>(u => u.CreatedOn), 
       Projections.SqlFunction("current_timestamp", new NHibernate.Type.TimestampType()))) 
      .List(); 

這將導致以下SQL:

SELECT this_.... FROM [User] this_ WHERE this_.CreatedOn > sysdatetime() ; 
0

這可能不適用於你的情況,但是這可能工作

session.QueryOver<User>() 
    .Where(u => u.CreatedOn > DateTime.Now) 
    .List(); 
+0

我需要current_timestamp。否則,我只會使用DateTime.Now,正確。 – BradLaney 2011-05-27 19:37:09