Sqlite: Comment lier et d'insérer la date à partir de C++?
À l'aide de C++ (Visual Studio) et sqlite. Comment puis-je lier une date en paramètre?
sqlite3_stmt *statement;
const char *sql =
"INSERT INTO employees "
"(full_name,"
"date_started)"
" VALUES "
"(@full_name,"
"@date_started)";
sqlite3_prepare_v2(database_, sql, -1, &statement, NULL);
int parameterIndex = sqlite3_bind_parameter_index(statement, "@full_name");
sqlite3_bind_text(statement, parameterIndex, "John Smith", -1, SQLITE_TRANSIENT);
parameterIndex = sqlite3_bind_parameter_index(statement, "@date_started");
//<??? what goes here ???>
//I want to include the local current time, so I want to know:
//1. what's the best way to get local time in C++
//2. and what goes here for the date binding
sqlite3_step(statement);
sqlite3_finalize(statement);
Note: je ne pas voulez régler l'heure actuelle à l'aide de sql (e.g, CURRENT_TIMESTAMP, etc.)
OriginalL'auteur User | 2011-08-25
Vous devez vous connecter pour publier un commentaire.
Il n'y a pas de truc à elle:
Voici la partie pertinente de la la documentation:
Il sera conservé comme un entier. Si vous essayez de mettre du texte dans une colonne d'affinité NUMÉRIQUE, SQLite convertit seulement si il peut être fait sans perte et de manière réversible, sinon il va le garder en tant que texte.
Eh bien toutes mes dates insérées à l'aide de textes de liaison sont en train d'apparaître dans la base de données sous forme de texte. Je viens d'essayer votre méthode et en effet un nombre entier. Pas sûr que j'aime voir un entier, cela signifie que j'ai toujours à l'appel d'une fonction
datetime(date_started, 'unixepoch')
pour voir ce que la date est. Savez-vous quelque chose sur les avantages/inconvénients de différents types pour l'enregistrement des dates dans SQLite?C'est le scénario de compromis entre l'espace de stockage et la durée de requête. Vous pouvez vérifier si l'appel de
datetime
ralentit votre requête; si non, alors il serait préférable de stocker des dates dans le plus compact de la forme entière.OriginalL'auteur Don Reba
Vous devriez être en mesure d'obtenir l'heure locale à l'aide de la
localtime()
fonction.Voir http://www.cplusplus.com/reference/clibrary/ctime/localtime/ pour plus de détails et un exemple.
OriginalL'auteur F21
Voici ce que j'ai compris. C'est un travail, mais je suis ouvert à de meilleures méthodes.
gmtime
au lieu delocaltime
comme il n'est pas sensible à l'heure d'été.Ah je suppose que c'est probablement la raison pour laquelle mon compilateur me donnait avertissement sur l'utilisation
localtime
.En fin de compte, je préfère avoir le datetime est comme des chaînes de caractères, donc je suis, le choix de ce que la réponse. Ce n'est pas vraiment clair pour moi ce qui est le meilleur format datetime pour une colonne de date, mais le temps nous le dira.
OriginalL'auteur User