2010-08-09 11 views
21

J'essaie de travailler avec des dates dans une base de données sqlite. Je stocke mes dates comme horodatages, mais quand j'utilise strftime() pour les formater en dates lisibles par l'homme, je reçois des résultats inattendus.formatage d'horodatage sqlite

Considérez ce qui suit, je sélectionne l'horodatage en cours:

SELECT strftime("%s","now"); 
1281353727 

Ensuite, j'essaie de formater une date en utilisant l'horodatage que je sais représenter attendre maintenant pour revenir un format lisible par l'homme de la date d'aujourd'hui:

SELECT strftime('%d - %m - %Y ', 1281353727); 
01 - 04 - 3503 

Au lieu de cela, j'obtiens le résultat ci-dessus. Est-ce que c'est un comportement correct? Est-ce que je fais quelque chose de mal?

Merci à l'avance,

Kevin

Répondre

43

Vous devez convertir l'horodatage en datetime premier:

SELECT strftime('%d - %m - %Y ', datetime(1281353727, 'unixepoch')) FROM Visits; 
+0

est-il un moyen de l'a-t-il imprimé le mois en texte? Ex: Août – Andrew

+0

Bonjour reko, Si je stocke cette date depuis Java dateObj.getTime() alors cela fonctionnera-t-il avec l'option unixepoch dans la fonction datetime? –

+3

Dans mon cas, je dois divider avec 1000. –

4

Cela a fonctionné pour moi:

datetime(visit_date/1000000,'unixepoch')