hql文でサポートされるローカル時間関数
hql文でサポートされるローカル時間関数
例:
1、
from Article where UNIX_TIMESTAMP(addTime) > UNIX_TIMESTAMP(current_timestamp()) - 24 * 60 * 60
2、
from Article where TO_DAYS(addTime) > TO_DAYS(current_timestamp()) - 1
注意:hql文では推奨されません
from Article where addTime > current_date()-1という書き方は、通常は問題ありませんが、特殊な場合には異常が発生します.たとえば、現在の日付が11月1日の場合、current_date()-1は日付1970-01-01を生成し、条件照会時に何も照会できません.hqlテストを書くことができます
select current_date() - 1 from Article;ここでArticleは1つのエンティティクラスであり、テスト時にデータベースが存在するサーバ時間をある月の1番に変更し、クエリーを印刷するlistは結果セットの1つを返します.
添付:mysqlがサポートする時間処理関数
DATE_ADD()、DATE_SUB()、TO_DAYS()、FROM_DAYS()、STR_TO_DATE()、CURRENT_TIMESTAMP()、UNIX_TIMESTAMP()、FROM_UNIXTIME()
1、UNIX_TIMESTAMP() , 1970
2、FROM_UNIXTIME
3、current_date()
4、current_time()
5、current_timestamp()
6、TO_DAYS()
7、FROM_DAYS
例:
1、
from Article where UNIX_TIMESTAMP(addTime) > UNIX_TIMESTAMP(current_timestamp()) - 24 * 60 * 60
2、
from Article where TO_DAYS(addTime) > TO_DAYS(current_timestamp()) - 1
注意:hql文では推奨されません
from Article where addTime > current_date()-1という書き方は、通常は問題ありませんが、特殊な場合には異常が発生します.たとえば、現在の日付が11月1日の場合、current_date()-1は日付1970-01-01を生成し、条件照会時に何も照会できません.hqlテストを書くことができます
select current_date() - 1 from Article;ここでArticleは1つのエンティティクラスであり、テスト時にデータベースが存在するサーバ時間をある月の1番に変更し、クエリーを印刷するlistは結果セットの1つを返します.
String hql = "select current_date() - 1 from Article";
List<Objcec> ret = session.createQuery(hql).setMaxResults(1).list();
if(ret.size() > 0){
Object entry = ret.get(0);
System.out.println(entry);
}else{
System.out.println("null");
}
添付:mysqlがサポートする時間処理関数
DATE_ADD()、DATE_SUB()、TO_DAYS()、FROM_DAYS()、STR_TO_DATE()、CURRENT_TIMESTAMP()、UNIX_TIMESTAMP()、FROM_UNIXTIME()