Проблема вставки записи с datetime в SQL server 2014 через ODBC C++
У меня есть простой код c++ для вставки записи в SQL Server 2014 через ODBC. Он прекрасно работает с полями varchar, но не работает с полем datetime.
Может ли кто-нибудь помочь понять, что это неправильно? У меня всегда есть:
"22018:1:0:[Microsoft][драйвер ODBC SQL Server]недопустимое символьное значение для спецификации cast\n"
Если я ошибаюсь здесь с моим вопросом, пожалуйста, дайте подсказку, какой форум подходит лучше. Я потратил несколько дней, но не могу найти решение. За любую помощь буду очень признателен.
Что я уже пробовал:
SQLHSTMT hstmt; SQLRETURN rc; rc = SQLAllocHandle(SQL_HANDLE_STMT, dbc, &hstmt); if(!SQL_SUCCEEDED(rc)) return NULL; SQLCHAR buf[64]; SQLLEN len; SQLCHAR buf2[255]; SQLLEN len2; SQLLEN len3; double f; rc = SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_TYPE_TIMESTAMP, 19, 0, (SQLCHAR*)buf, 0, &len); rc = SQLBindParameter(hstmt, 2, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_VARCHAR, 255, 0, (SQLCHAR*)buf2, 0, &len2); rc = SQLBindParameter(hstmt, 3, SQL_PARAM_INPUT, SQL_C_FLOAT, SQL_FLOAT, 15, 0, &f, 0, &len3); rc = SQLPrepare(hstmt, (SQLCHAR*)"insert into test(timepoint,strvalue,floatvalue) values (?,?,?)", SQL_NTS); strcpy((char*)buf,"2017-10-10T00:08:14"); len=strlen("2017-10-17T00:08:14"); strcpy((char*)buf2,"simple string"); len2=strlen("simple string"); f=1.34e+8; SQLSMALLINT NumParams; SQLNumParams(hstmt, &NumParams); rc = SQLExecute(hstmt);