я использую Роланд Бок sqlpp11 библиотека для mysql
запросы и Свидание Говарда Хиннанта библиотека для работы на дату в моем проекте.
И получаю следующую ошибку в одном из моих запросов на обновление.
/usr/local/include/sqlpp11/rhs_wrap.h: In instantiation of ‘struct sqlpp::rhs_wrap_t<date::year_month_day, false>’:
/usr/local/include/sqlpp11/assignment.h:63:12: required from ‘struct sqlpp::assignment_t<sqlpp::column_t<changestreet::Goals, changestreet::Goals_::GoalEndDate>, date::year_month_day>’
sqlOperations/sqlppDbConnection.cpp:286:65: required from ‘bool setEmergencyFundGoal(T1, T2, T2, T3, T3) [with T1 = int; T2 = const char*; T3 = double]’
main.cpp:705:113: required from here
/usr/local/include/sqlpp11/rhs_wrap.h:119:43: error: no type named ‘_traits’ in ‘class date::year_month_day’
using _traits = typename Expr::_traits;
И вот это обновление заявления
auto efGoal = db_cs.run(update(g).set(g.goalAmount = emergencyFund,
g.goalEndDate = contributionEndDate, // Line number 286
g.goalContributionStartDate = currentDate(),
g.goalContributionEndDate = contributionEndDate,
g.goalInitialContribution = initialContribution,
g.goalMaximumAchievableAmount = emergencyFund,
g.goalCreatedOn = currentDateTime(),
g.goalUpdatedOn = currentDateTime()
).where(g.goalName == goalName
and g.goalType == goalType
and g.usersUserId == userId)
);
А вот значение, которое используется в RHS
auto contributionEndDate = lastDateOfMonth(currentDate(), date::months{contributionTenure}) ;
Вот определение вклада lastDateOfMonth()
функция.
date::year_month_day lastDateOfMonth(date::year_month_day givenDate, date::months monthsNum) {
date::year_month_day newDate = year_month_day{givenDate} + monthsNum;
newDate = newDate.year()/newDate.month()/last;
return newDate;
}
И currentDate()
функция
date::year_month_day currentDate() {
auto currentTime = system_clock::now();
auto currentDate = floor<days>(currentTime);
return currentDate;
}
Название колонки goal_end_date
имеет тип DATE
в структуре таблицы MySQL.
Мне нужно было изменить тип данных mysql с DATE
в DATETIME
и после этого system_clock::time_point
Переменные присваивания переменных типа работают как шарм.
Это также будет работать с MySQL DATE
тип данных с типом назначения переменной system_clock::day_point
,
П.С .: Мне нужно было изменить два заданных функтина с типом возврата syste_clock::time_point
,
Других решений пока нет …