la base de données sqlite par défaut de la valeur temps "maintenant"
Est-il possible dans une base de données sqlite pour craete une table qui contient une colonne timestamp que le défaut de DATETIME('now')
?
Comme ceci:
CREATE TABLE test (
id INTEGER PRIMARY KEY AUTOINCREMENT,
t TIMESTAMP DEFAULT DATETIME('now')
);
Cela donne une erreur... Comment le résoudre?
Vous devez vous connecter pour publier un commentaire.
je crois que vous pouvez utiliser
à partir de la version 3.1 (source)
selon le dr. hipp dans une liste récente de poste:
CURRENT_TIMESTAMP
donc j'ai créé ma propre fonction en C pour le retour, le nombre de microsecondes depuis l'Époque, et je suis content de l'utiliser comme unDEFAULT
maintenant.C'est juste une erreur de syntaxe, vous avez besoin de parenthèse:
(DATETIME('now'))
Si vous regardez la la documentation, vous noterez la parenthèse qui est ajouté autour de la 'expr' option dans la syntaxe.
C'est un exemple complet sur la base des autres réponses et commentaires à la question. Dans l'exemple de l'horodatage (
created_at
-colonne) est enregistré en tant que l'époque unix le fuseau horaire UTC et convertis au fuseau horaire local uniquement lorsque c'est nécessaire.À l'aide de l'époque unix économise de l'espace de stockage de 4 octets entier contre 24 octets chaîne stocké comme ISO8601 de chaîne, voir les types de données. Si 4 octets n'est pas assez que peut être augmentée à 6 ou 8 octets.
D'économie d'horodatage sur le fuseau horaire UTC rend pratique pour afficher une valeur raisonnable sur plusieurs fuseaux horaires.
SQLite version 3.8.6 livré avec Ubuntu LTS 14.04.
Localtime est correct comme je suis situé à UTC+2 heure d'été, au moment de la requête.
Il peut être préférable d'utiliser type RÉEL, pour économiser l'espace de stockage.
Citation de 1.2 section de Les Types De Données De SQLite Version 3
voir la colonne de contrainte .
Et insérer une ligne sans fournir aucune valeur.
integer(n)
où l'on peut choisir la valeur correspondant àn
.C'est une erreur de syntaxe parce que vous n'avez pas à écrire une parenthèse
si vous écrivez
(datetime('now','localtime'))
Cette alternative exemple les magasins de l'heure locale, en tant qu'Entier pour sauver le 20 octets. Le travail est effectué dans le domaine par défaut, la mise à Jour de déclenchement, et la Vue.
strftime devez utiliser '%s' (guillemets simples), parce que "%s" (guillemets), il a lancé un "Non Constant' erreur sur moi.