Я пытаюсь выполнить массовое копирование данных с использованием расширений ODBC bcp в таблицу SQL Server 2008 R2 со столбцом DATETIME. Есть ли практический способ конвертации из общих структур C / C ++ time_t
или же struct tm
в структуру DBDATETIME.
Это определяется как громоздкий:
typedef struct dbdatetime
{ // Internal representation of DATETIME data type
LONG dtdays; // No of days since Jan-1-1900 (maybe negative)
ULONG dttime; // No. of 300 hundredths of a second since midnight
} DBDATETIME;
Который требует массива данных перед вызовом bcp_sendrow. Было бы неплохо, если бы я мог перенести загрузку преобразования на сервер, а не на свое приложение.
Даже быть способным сделать что-то подобное было бы неплохо:
const char* charDT= "1923-11-21 06:50:40";
bcp_bind(hdlDbc, (LPCBYTE) charDT, 0, sizeof(DBDATETIME), 0, 0, SQLDATETIME, 11)
Но я получаю ошибки в bcp_sendrow «Неверные данные для столбца». Какие-нибудь мысли?
Попробуй это:
const char* charDT= "19231121 06:50:40";
bcp_bind(hdlDbc, (LPCBYTE)charDT, 0, SQL_VARLEN_DATA, (LPCBYTE)pTerminator, iLenTerminator, SQLVARCHAR, 11);