如何在DATETIME列中使用ODBC API bcp_bind?

时间:2014-09-29 20:37:39

标签: c++ sql-server odbc bcp

我正在尝试使用ODBC bcp扩展将数据批量复制到带有DATETIME列的SQL Server 2008 R2表中。是否存在从常见的C / C ++结构time_tstruct 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“列的无效数据”中遇到错误。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

试试这个:

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

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