c++ - 无法通过 Linux 上的 FreeTDS bcp API 将 DATE 插入 mssql

标签 c++ sql-server bcp freetds

当我尝试在 Linux 上通过 FreeTDS bcp 插入 DATE 时,我遇到了这个错误:

Conversion failed when converting date and/or time from character string.
create table test (c_date date);

此列的绑定(bind)类型是 SYBCHAR,在 Windows 上我没有问题,但我使用 WinApi

...
char buff[10];
time_t time = ACE_OS::time(nullptr);
struct tm *tmp = localtime(&time);
strftime(buff, 10, "%Y-%m-%d", tmp); /// example: 2008-10-22
bcp_collen(db, 10, 1);
bcp_colptr(db, reinterpret_cast<BYTE*>(buff), 1);
bcp_sendrow(db);
bcp_batch(db); /// here the exception is thrown

我尝试使用另一种日期格式模式,例如 %Y%m%d%Y/%m/%d 等,另一种绑定(bind)类型,在 freetds.conf 附近创建 locales.conf,但没有...

最佳答案

我能够插入日期,如果您遇到同样的问题,您应该转换为 UCS2。

Before data status

After

关于c++ - 无法通过 Linux 上的 FreeTDS bcp API 将 DATE 插入 mssql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56792758/

相关文章:

c++ - Boost线程,如何检查线程是否仍在运行?

c++14 用于函数绑定(bind)的 Variadic lambda 捕获

c++ - 运算符重载的基本规则和惯用法是什么?

sql - 在 where 子句中切换大小写/If

sql - 想要使用ssis将excel文件数据插入表中 - 格式问题

sql-server - BCP 实用程序语法不正确

c++ - 调试信息的 clang llvm 中间表示

sql - 使用 SQL 查询读取 XML 子节点属性

sql - BCP 导入帮助

sql-server - 使用从阶段文件复制到雪花中插入数据