简体   繁体   中英

PostgreSQL : SQL timestamp to Unix timestamp using libpq

I know I can convert SQL timestamp to unix timestamp, using the following way.

SELECT extract(epoch FROM now());

Now, I have a stored procedure function, which will directly return a table row to the caller. One of the row field is "timestamp" type.

In my application, I am using libpq. I wish to use libpq functions (or any c/c++ function), to convert "2010-01-11 13:10:55.283" into unix timestamp. Off course, I can create another stored procedure named

SQLTimestamp2UnixTimestamp
SELECT extract(epoch FROM $1);

But I just wish to accomplish this task with a single c/c++ function call, without involving stored procedure.

Any suggestion? Thanks!

Why not simply (untested):

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

then

strftime(epoch, MAX, "%s", result);
/* print epoch */
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);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM