2009-02-10 4 views
-1

Comment puis-je obtenir le DateTime actuel du serveur de base de données, en utilisant NHibernate? J'ai essayé d'utiliser l'expression current_date, mais cela ne semble pas fonctionner en dehors de la clause where. Ce dont j'ai besoin, c'est quelque chose comme SELECT getdate(). Cette requête dans le serveur SQL obtient le datetime du serveur, je ne sais pas comment le mettre en dialecte HQL.NHibernate: récupérer le serveur de base de données en cours DateTime

Merci

Répondre

2

Une option est simplement d'utiliser une requête SQL nommée dans votre fichier de mappage:

<sql-query name="CurrentDate"> 
    <![CDATA[ 
    select getdate() 
    ]]> 
</sql-query> 

Puis dans votre code d'appel:

IQuery q = session.GetNamedQuery("CurrentDate"); 
var date = q.UniqueResult<DateTime>(); 

Bien sûr, cela ne fonctionne Si vous cherchez à récupérer uniquement la date et non la date et d'autres parties de vos entités.

+0

Merci Sean. Cela ne fonctionnerait que dans SQL Server, n'est-ce pas? – DiegoCofre

+0

Right - cette syntaxe ne fonctionnerait que dans SQL Server (et peut-être Sybase). Ce n'est pas une bonne solution si la portabilité de la base de données est importante. –

Questions connexes