PostgreSQL和c++ -比较日期

PostgreSQL and C++ - Compare dates

本文关键字:比较 日期 c++ PostgreSQL      更新时间:2023-10-16

我有一个名为date()的c++函数,它将当前日期作为字符串返回:

string date()
{
   time_t seconds = time (NULL);
   struct tm * timeinfo = localtime (&seconds);
   ostringstream oss;
   oss << (timeinfo->tm_year + 1900) 
       << "-" << (timeinfo->tm_mon + 1) 
       << "-" << timeinfo->tm_mday; 
   string data = oss.str();
   return data;
}

我需要比较date()的返回值与存储在我的一个表中的值。这是我到目前为止所尝试的:

if(strcmp(PQgetvalue(res,row,col),date()) != 0)

但是,编译器一直给我抛出以下错误:

错误:无法将' std::string{又名std::basic_string} '转换为' const char* ',参数' 2 '转换为' int strcmp(const char*, const char*) '

谁能帮我找到一个解决方案?

1 -你可以使用string的c_str()方法来访问底层的C字符串:

if(strcmp(PQgetvalue(res,row,col),date().c_str()) != 0)

2 -更好的是,如果你想要"完整的c++",将PQgetvalue的输出转换为字符串,并使用比较运算符:

if(string(PQgetvalue(res,row,col)) == date())