Performing Date / Heure Maths en HQL?
Je suis à la recherche comment effectuer la date/l'heure de mathématiques à l'intérieur d'une requête HQL. Plus précisément, comment puis-je ajouter ou soustraire (x) quantité de temps à partir du résultat de la current_timestamp()
fonction? Ou dois-je laisser tomber dans SQL pour ce et espérons que, quelle que soit la base de données est en cours d'exécution prend en charge?
Requête HQL exemple:
FROM RandomThing
WHERE randomTime IS NOT NULL AND
randomTime >= current_timestamp() AND
randomTime <= (current_timestamp() + :timeToAdd)
Je peux définir l' :timeToSubtract paramètre à une unité particulière, mais quelque chose de plus grand que les heures ne serait pas souhaitable, et les secondes qui serait le plus souhaitable.
PRÉCISIONS: je réalise que j'ai peut être fait facilement à l'extérieur de la requête. Mais pour des raisons philosophiques, disons que c'est important d'utiliser la base de données du serveur de temps, plutôt que de l'interrogation du système de temps. Exemple concret: je suis l'interrogation automatique d'horodatage pour toutes les inscriptions faites au cours de la dernière (x) quantité de temps. Depuis le timestamp est faite par le système de base de données, il est également important d'utiliser la base de données à l'heure actuelle.
source d'informationauteur jdmichal
Vous devez vous connecter pour publier un commentaire.
Si vous avez besoin de la base de données du serveur de temps, vous pouvez tout d'abord faire une simple requête hql pour obtenir le timestamp puis de calculer la maxTimestamp en java et passer à la prochaine horodatage et la valeur calculée maxTimeStamp à une requête de l'une des ccclark.
Pourquoi avez-vous besoin de le faire dans la requête? Pourquoi ne pas simplement le gérer dans le code java.
par exemple:
Et ensuite il suffit de régler les paramètres.
Vous pourriez déterminer la syntaxe de le faire à l'aide de SQL dans votre base de données, puis de définir une fonction au sein d'un HibernateDialect. Par exemple, nous avons besoin d'une fonction jour de la semaine qui n'est pas standard SQL. Nous sous-classé le dialecte pour chaque base de données et ensuite ajouter une ligne comme ceci:
Dans votre cas, vous pouvez utiliser une fonction appelée date_diff qui peut être défini comme ? - ? dans certaines bases de données ou quelque chose de différent dans d'autres. De cette façon, vous ne devez pas écrire de SQL brut dans votre requête et si jamais vous avez besoin de changer de base de données, vous associez la fonction différente dans votre dialecte.
- T-il HQL? Je serais probablement passer jusqu'à hibernate de critères et d'utilisation: