我正在开发一个必须每周维护一个SQL数据库记录的软件。因此,每次启动时,它都不知道当前周的记录是否已经创建(因此只需更新它)(因此需要创建该记录)。所有记录都有一个“日期 - 时间”参数,其日期值对应于通讯周的第一天。
所以,使用Qt,我怎么知道那周的记录是否已经存在? (在算法中,而不是SQL sintax)鉴于我所做的所有算法尝试,似乎我无法避免需要知道数据库中的最后一天是否是当前周的一部分(或者,如同我的问题,要知道哪一周是本周的第一天所以我可以与数据库的最后一个条目进行比较),但如何知道呢?我可以做一个手动计算,例如:选择当天和通讯日,减去x天,直到我到达当周的星期一,看看是否是存储在数据库中的那天¹,但我想知道是否有一个更聪明的代码然后我就错过了。
¹:这样的事情:
const QDate lastRecordDate = QDateTime::fromString(query.record().value(0).toString(),DOWNLOAD_DB_DATETIME_FORMAT).date();
const QDate currDate = QDate::currentDate();
const qint32 dayOfWeek = currDate.dayOfWeek();
const qint32 daysDiff = Qt::Monday - dayOfWeek;
const QDate firstDayOfThisWeek = currDate.addDays(daysDiff);
if (lastRecordDate != firstDayOfThisWeek)
createWeeksRecord = true;
答案 0 :(得分:0)
尝试在QDate上使用weekNumber()
方法。
const QDate lastRecordDate = QDateTime::fromString(query.record().value(0).toString(),DOWNLOAD_DB_DATETIME_FORMAT).date();
const QDate currDate = QDate::currentDate();
if (lastRecordDate.weekNumber() != currDate.weekNumber())
{
// Insert new record here.
}
else
{
// Update record here.
}