Cheok Yan Cheng
Cheok Yan Cheng

Reputation: 42768

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!

Upvotes: 3

Views: 4134

Answers (2)

Cheok Yan Cheng
Cheok Yan Cheng

Reputation: 42768

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

Upvotes: 1

bortzmeyer
bortzmeyer

Reputation: 35519

Why not simply (untested):

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

then

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

Upvotes: 4

Related Questions