Код: Выделить всё
id, name, value, date/time
------------------------------------
1 John 23 05/17/24 2:20 AM
2 Paul 26 05/17/24 5:25 AM
3 Mathew 27 05/17/24 5:28 PM
4 Sara 23 05/17/24 5:30 PM
В этом коде я передаю начало, конец параметр в функции getRecordsBetween() как сегодняшняя дата (
Код: Выделить всё
17-5-2024
Теперь, как я могу получить только последнюю запись/последнюю запись, вставленную в базу данных на сегодня, т.е. (
Код: Выделить всё
4, Sara, 23, 05/17/24 5:30 PM
Примечание: DateTime start, DateTime end является только условием фильтра на сегодня/один день.
Также я использую функцию Joda - DateTime.
RecordDao.java
Код: Выделить всё
import android.util.Log;
import androidx.annotation.NonNull;
import com.j256.ormlite.stmt.QueryBuilder;
import com.j256.ormlite.stmt.SelectArg;
import org.joda.time.DateTime;
import org.joda.time.DateTimeConstants;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
...
public List getRecordsBetween(DateTime start, DateTime end) {
if (start == null || end == null) {
return new ArrayList();
}
start = start.withTimeAtStartOfDay();
end = end.withTime(DateTimeConstants.HOURS_PER_DAY - 1,
DateTimeConstants.MINUTES_PER_HOUR - 1,
DateTimeConstants.SECONDS_PER_MINUTE - 1,
DateTimeConstants.MILLIS_PER_SECOND - 1);
try {
return getQueryBuilder()
.orderBy(Record.Column.DATE, true)
.where().gt(Record.Column.DATE, start)
.and().lt(Record.Column.DATE, end)
.query();
} catch (SQLException exception) {
Log.e(TAG, exception.toString());
return new ArrayList();
}
}
...
Код: Выделить всё
[1] Trying/No success
Я пытался получить первую запись с помощью queryForFirst(), но требовалось вернуть результат как запись, потому что это одна запись, а не List
Код: Выделить всё
return join(Record.class).orderBy(Record.Column.DATE, false)
.where().le(Record.Column.DATE, DateTime.now()).queryForFirst();
Код: Выделить всё
[2] Another lookup step
Если я отфильтровал или очистил все записи из списка , кроме последней, я смогу получить желаемый результат.
Код: Выделить всё
recordsOfDay
Код: Выделить всё
recordsOfDay.subList(0, recordsOfDay.size()-1).clear();
Подробнее здесь: https://stackoverflow.com/questions/784 ... e-and-java