Как использовать ODBC API bcp_bind со столбцом DATETIME?

Я пытаюсь выполнить массовое копирование данных с использованием расширений 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 «Неверные данные для столбца». Какие-нибудь мысли?

0

Решение

Попробуй это:

const char* charDT= "19231121 06:50:40";

bcp_bind(hdlDbc, (LPCBYTE)charDT, 0, SQL_VARLEN_DATA, (LPCBYTE)pTerminator, iLenTerminator, SQLVARCHAR, 11);
0

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