HQL sorgusunda tarih/saat matematiğinin nasıl gerçekleştirileceğine bakıyorum. Spesifik olarak, current_timestamp()
işlevinin sonucundan (x) miktarını nasıl eklerim veya çıkarırız? Ya da bunun için SQL'e düşmem gerekiyor ve hangi veritabanı çalıştırılıyorsa onu desteklemeyi umuyorum?Tarih/Saat Matematik HQL'de mi?
HQL sorgu örneği: saatten daha büyük bir şey istenmeyen, buna rağmen herhangi bir birim olarak timeToSubtract parametre ve saniye en çok tercih edilen olacaktır:
FROM RandomThing
WHERE randomTime IS NOT NULL AND
randomTime >= current_timestamp() AND
randomTime <= (current_timestamp() + :timeToAdd)
I tanımlayabilir.
AYDINLATMA: Bunun kolayca sorgu dışında yapılabileceğini anlıyorum. Ancak, felsefi nedenlerden ötürü, sorgulama sisteminin zamanından ziyade veritabanı sunucusunun zamanını kullanmanın önemli olduğunu varsayalım. Pratik örnek: Son (x) miktarında yapılan tüm girişler için otomatik zaman damgasını sorgularım. Zaman damgası veritabanı sistemi tarafından yapıldığından, veritabanının geçerli zamanını da kullanmak önemlidir.
Ayrıca aynı şeyi arıyorum, timeToAdd bir parametre değil, aynı satırdan bir sütun olması dışında, aynı satır ve tabloya ikinci bir sorgu yapmak mantıklı gelmiyor. – James