2010-01-11 6 views
2

Je sais que je peux convertir l'horodatage SQL en horodatage unix, de la manière suivante. Maintenant, j'ai une fonction de procédure stockée, qui retournera directement une ligne de table à l'appelant. L'un des champs de ligne est de type "timestamp".PostgreSQL: horodatage SQL à l'horodatage Unix en utilisant libpq

Dans mon application, j'utilise libpq. Je souhaite utiliser les fonctions libpq (ou toute autre fonction c/C++) pour convertir "2010-01-11 13: 10: 55.283" en timestamp unix. Bien sûr, je peux créer une autre procédure stockée nommée

SQLTimestamp2UnixTimestamp 
SELECT extract(epoch FROM $1); 

Mais je souhaite juste que pour accomplir cette tâche avec un seul c/C++ appel de fonction, sans impliquer la procédure stockée.

Une suggestion? Merci!

Répondre

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

une solution avec C++ natif sans bibliothèque Boost devrait marquer comme la réponse. – LAL

2

Pourquoi ne pas simplement (non testé):

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

puis

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