我知道我可以使用以下方式将SQL时间戳转换为unix时间戳。
SELECT extract(epoch FROM now());
现在,我有一个存储过程函数,它将直接将表行返回给调用者。其中一个行字段是“timestamp”类型。
在我的应用程序中,我使用的是libpq。我希望使用libpq函数(或任何c / c ++函数)将“2010-01-11 13:10:55.283”转换为unix时间戳。当然,我可以创建另一个名为
的存储过程SQLTimestamp2UnixTimestamp
SELECT extract(epoch FROM $1);
但我只想通过单个c / c ++函数调用完成此任务,而不涉及存储过程。
有什么建议吗?谢谢!
答案 0 :(得分:3)
为什么不简单(未经测试):
/* PostgreSQL sent "date" */
strptime(date, "%Y-%m-%d %H:%M:%S", &result);
然后
strftime(epoch, MAX, "%s", result);
/* print epoch */
答案 1 :(得分:1)
boost::posix_time::ptime t(boost::posix_time::time_from_string(ts));
boost::posix_time::ptime start(boost::gregorian::date(1970,1,1));
boost::posix_time::time_duration dur = t - start;
time_t epoch = dur.total_seconds();
long timestamp = static_cast<long>(epoch);