Par défaut format d'horodatage et de la fraction de secondes
Je suis en train de format de l'horodatage dans ma base de données Postgres pour un certain format:
YYYY-MM-DD HH24:MI:SS
Par:
update myTable set tds = to_char(tds, 'YYYY-MM-DD HH24:MI:SS')::timestamp;
J'ai réussi à régler tous les précédemment stocké à l' tds
à ce format. Cependant, tout nouvellement ajouté entrée remonte à: YYYY-MM-DD HH24:MI:SS.MS
car la valeur par défaut est définie à now()
.
Comment puis-je changer cela pour que les nouvelles entrées ajoutées également avoir le format: YYYY-MM-DD HH24:MI:SS
?
Je vois que vous voulez truncat millisecondes partie ? vous pouvez le faire en utilisant un déclencheur.
Où est votre définition de la table? Nous aurions besoin de le voir pour en être sûr.
Où est votre définition de la table? Nous aurions besoin de le voir pour en être sûr.
\d myTable
dans psql.OriginalL'auteur Anko | 2014-03-11
Vous devez vous connecter pour publier un commentaire.
Il n'y a pas de format stocké dans un type timestamp. Vous pouvez définir sa valeur par défaut à un horodatage tronquée de la seconde au moment de la création
Ou modifier la table
Si vous ne voulez pas afficher les millisecondes à part le format de sortie
OriginalL'auteur Clodoaldo Neto
Les types
timestamp
outimestamptz
éventuellement prendre une précision modificateurp
:timestamp(p)
.Pour tronquer les fractions de secondes, de définir la valeur par défaut:
now()::timestamp(0)
ounow()::timestamptz(0)
Qui plus est, même le standard SQL fonctions
CURRENT_TIMESTAMP
(retournetimestamptz
),LOCALTIMESTAMP
(retournetimestamp
) prendre la même précision modificateur de produire ces types:C'est un peu moins cher et plus courte que d'appeler
date_trunc()
.Je suis en supposant que vous êtes pas à l'aide d'un type de caractère, ce qui ne serait pas bon. Toujours stocker les horodatages comme
timestamp
.Enfin, afin de rendre sûr que, je cite:
aller plus loin et de définir votre colonne de cette façon. Cela permettra non seulement de couvrir la valeur par défaut, mais de tout et de toutes les valeurs entrées de cette colonne.
Vous pouvez ainsi garder
now()
en tant que par défaut puis, il est contraint pour le sous-type de données de toute façon:Voir @Clodoaldo réponse pour des instructions sur
to_char()
et commentALTER TABLE
.Cette réponse pour obtenir des informations détaillées sur les horodatages et l'heure de la zone de manutention:
Ignorant les fuseaux horaires tout à fait dans les Rails et PostgreSQL
OriginalL'auteur Erwin Brandstetter