2010-01-11 91 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 */