PostgreSQL: временная метка SQL для временной метки Unix с использованием libpq - PullRequest
3 голосов
/ 11 января 2010

Я знаю, что могу преобразовать метку времени SQL в метку времени 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 / c ++, без использования хранимых процедур.

Есть предложения? Спасибо!

Ответы [ 2 ]

3 голосов
/ 13 января 2010

Почему бы просто (не проверено):

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

тогда

strftime(epoch, MAX, "%s", result);
/* print epoch */
1 голос
/ 21 января 2010
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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...