Я использую Spring JPA. И нужно извлечь час из поля begin_timeBIGINT. Значения выглядят так
1547654400000
1547568000000
1547654400000
Вот что я пробовал
@Query("select extract(hour from (s.beginTime/1000)) from TestTable s")
public List<Integer> testQuery() {
// implementation
}
Но он всегда возвращает ноль.
В Java есть метод System.currentTimeMillis (). Следовательно, в Spring JPA должен быть метод для извлечения часа из временной метки unix.
Как извлечь час из временной метки unix
Это не JPQL, который вы публикуете, поэтому он все равно не сработает (если у вас нет секретного флага nativeQuery, установленного в другом месте)




если beginTime - это временная метка unix, попробуйте extract(hour from FROM_UNIXTIME(s.last_login) ),
надеюсь, я смогу вам помочь.
HOUR(FROM_UNIXTIME(1547654400000/1000)) -> 8
MID() или других строковых манипуляций.)Внимание: это позволит получить «час», связанный с любым часовым поясом, запеченным в значении.
Возможно, это то, что вы хотели:
FLOOR(1547654400000/(1000*3600))%24, с другой стороны, дает вам 16, «час», который находится в значении.
Подумайте об этом так: разделите на части ниже «часа» (миллисекунды и секунды в час), затем перейдите по модулю количества часов в день (24).
Можете ли вы добавить полный код класса, в котором используется метод testQuery?