Я хочу получить количество новых пользователей в месяц. Месяц должен указываться с помощью временной метки UTC (в мс, как Long
) первого дня месяца в 0:00.
Этот подход может объяснить, что я хочу сделать:
Entity
class User {
@NotNull
private Long createdAt; // utc timestamp in ms
}
Репозиторий
public interface UserRepository extends CrudRepository<User, Long> {
@Query("SELECT new UserRepository$NewUser(to_start_of_month_in_ms(user.createdAt), count(user.id)) "
+ "FROM User user "
+ "GROUP BY to_start_of_month_in_ms(user.createdAt) ")
List<NewUser> findNewUsersPerMonth();
@Getter
@AllArgsConstructor
public static class NewUser {
private Long startOfMonth; // utc timestamp in ms
private Integer count;
}
}
Что можно использовать для to_start_of_month_in_ms
, т. Е. Как мы можем получить начало месяца из поля createdAt
в выражении group by. Что следует
@Query
похож?