ошибка: нет типа с именем «_traits» в «дате класса :: year_month_day»?

я использую Роланд Бок 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.

1

Решение

Мне нужно было изменить тип данных mysql с DATE в DATETIME и после этого system_clock::time_point Переменные присваивания переменных типа работают как шарм.

Это также будет работать с MySQL DATE тип данных с типом назначения переменной system_clock::day_point,

П.С .: Мне нужно было изменить два заданных функтина с типом возврата syste_clock::time_point,

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]