Reputation: 42768
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
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
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