一、问题 soci库的源码中将数据库的DATETIME类型全部转换成了std::tm结构,但这样产生的问题是,数据库保存的DATETIME(3)类型中的毫秒值会丢失。 二、解决 修改源码中的转换函数,将dt_date类型的值转为string类型。 读取时就可以用row.get<std::string>()方式获取,再将字符串解析为带有毫秒精度的日期时间。 也可以自己封装带有毫秒精度的日期时间类进行解析。