J'essaie d'insérer une valeur datetime dans une base de données SQLite . Cela semble être une réussite, mais lorsque j'essaie de récupérer la valeur, une erreur se produit:
<Impossible de lire les données>
Les instructions SQL sont:
create table myTable (name varchar(25), myDate DATETIME)
insert into myTable (name,mydate) Values ('fred','jan 1 2009 13:22:15')
Le format dont vous avez besoin est:
'2007-01-01 10:00:00'
c'est-à-dire aaaa-MM-jj HH: mm: ss
Toutefois, si possible, utilisez une requête paramétrée, cela vous évitera de vous soucier des détails de la mise en forme.
La façon de stocker les dates dans SQLite est la suivante:
yyyy-mm-dd hh:mm:ss.xxxxxx
SQLite dispose également de fonctions de date et d’heure que vous pouvez utiliser. Voir SQL tel que compris par SQLite, fonctions de date et d'heure .
Vous devez modifier le format de la chaîne de date que vous fournissez pour pouvoir l'insérer à l'aide de la fonction STRFTIME. Raison d'être, il n'y a pas d'option pour une abréviation d'un mois:
%d day of month: 00
%f fractional seconds: SS.SSS
%H hour: 00-24
%j day of year: 001-366
%J Julian day number
%m month: 01-12
%M minute: 00-59
%s seconds since 1970-01-01
%S seconds: 00-59
%w day of week 0-6 with sunday==0
%W week of year: 00-53
%Y year: 0000-9999
%% %
L’alternative est de formater la date/heure dans un format déjà accepté:
Référence: fonctions SQLite Date & Time
Utilisez CURRENT_TIMESTAMP
lorsque vous en avez besoin, au lieu de OF NOW()
(qui est MySQL)
Ce n'est peut-être pas la méthode la plus populaire ou la plus efficace, mais j'ai tendance à renoncer aux types de données forts dans SQLite car ils sont tous essentiellement vidés sous forme de chaînes.
J'ai déjà écrit un wrapper C # mince autour de la bibliothèque SQLite (lorsque vous utilisez SQLite avec C #, bien sûr) pour gérer les insertions et les extractions vers et depuis SQLite comme si je traitais avec des objets DateTime.