2010-01-11 179 views
2

我知道我可以使用以下方法将SQL时间戳转换为unix时间戳。PostgreSQL:SQL时间戳使用libpq的Unix时间戳

SELECT extract(epoch FROM now()); 

现在,我有一个存储过程函数,它将直接返回一个表行给调用者。行字段之一是“时间戳”类型。

在我的应用程序中,我使用libpq。我希望使用libpq函数(或任何c/C++函数)将“2010-01-11 13:10:55.283”转换为unix时间戳。当然,我可以创建另一个名为

的存储过程。
SQLTimestamp2UnixTimestamp 
SELECT extract(epoch FROM $1); 

但我只是希望用一个c/

有什么建议吗?谢谢!

回答

0
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); 
+0

与本地C溶液++没有Boost库应该标记为答案。 – LAL 2017-04-25 18:43:30

2

为什么不简单地(未经测试):

/* PostgreSQL sent "date" */ 
strptime(date, "%Y-%m-%d %H:%M:%S", &result); 

然后

strftime(epoch, MAX, "%s", result); 
/* print epoch */