|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : septembre 2005 Messages : 16 ![]() |
Hello à tous,
Je souhaite enregistrer des dates non précises : uniquement l'année ou uniquement le mois, l'heure... Ou la date complète. Avec Mysql, un champ datetime peux recevoir 2008-00-00 00:00:00 comme valeur (ou 0000-07-00 00:00:00) Comment faire avec PostgreSQL ? Merci ++ |
|
|
00
|
|
|
#2 | |
|
Membre Expert
![]() Inscription : juin 2007 Messages : 1 497 ![]() |
Citation:
![]() 0000-07-00 n'est pas une date valide, donc impossible de l'insérer, point bas. Ta date doit toujours être valide, si tu ne mets que l'année, il faut mettre par exemple arbitrairement YYYY-01-01 mais comment distinguer la date 2008-01-01 de l'année 2008 tout court ? Je pense que ton modèle de données est mauvais, si tu veux juste une année, un mois ou un jour, il faut des colonnes de type entier
__________________
La théorie, c'est quand on sait tout mais que rien ne fonctionne. La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi ! Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/ |
|
|
|
00
|
|
|
#3 |
|
Nouveau Membre du Club
![]() Inscription : septembre 2008 Messages : 68 ![]() |
Bonjour,
effectivement, sur postgresql il semble qu'on ne puisse avoir le type "année d'une date" : http://sqlpro.developpez.com/cours/sqlaz/fonctions/ mais on peut sélectionner une partie de date et donc l'année : http://sqlzoo.net/fun_datepart seul problème, il semble que ça ne soit valable que pour les sélection et comme le dit Scheu, il faut utiliser un entier si l'on veut entrer une année dans la base. à + cordialement, |
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Inscription : septembre 2005 Messages : 16 ![]() |
Merci pour vos réponses. Je vais donc passer par des entiers !
Dommage qu'il n'y ai pas quelques choses de prévu pour ça. Dans mon cas, il s'agit d'un base de données sur des évènements de l'antiquité dont on ne connais pas forcément la date exacte |
|
|
00
|
|
|
#5 |
|
Membre Expert
![]() Inscription : juin 2007 Messages : 1 497 ![]() |
Heureusement plutôt, sinon tu te retrouverais avec plein de dates non valides comme dans MySQL ...
Tu n'as qu'à créer 3 colonnes de type entier qui seraient année, mois, jour, et si par exemple pour une date tu ne connais que l'année, tu laisse les colonnes mois et jour à NULL, c'est le plus propre
__________________
La théorie, c'est quand on sait tout mais que rien ne fonctionne. La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi ! Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/ |
|
|
00
|
|
|
#6 |
|
Nouveau Membre du Club
![]() Inscription : septembre 2008 Messages : 68 ![]() |
Bonjour,
est-ce pertinent de créer deux colonnes : l'une avec la date normale (ymd), et l'autre qui soit le résultat d'une requête qui sélectionne la date (juste l'année) de la 1ere colonne avec un déclencheur (sur la 1ere colonne) lors d'un insert ? je doute qu'on puisse faire un déclencheur sur une seule colonne. un déclencheur après update sur la même table, il parait que c'est pas très conseillé ??? qu'en pensez vous ?? |
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() Inscription : juin 2007 Messages : 1 497 ![]() |
Non, ça équivaut à faire une usine à gaz ... C'est comme ça qu'après tu te retrouves avec un mauvais modèle de données (en plus avec duplication inutile de données) et des perfs pourries dans quelques mois
Si avant avec MySQL tu insérais des dates comme 0000-07-00, c'est que tu ne devais pas beaucoup utiliser les fonctions sur les dates ... Dans ce cas la solution la plus propre est celle que j'ai décrite, avec 3 colonnes de type entier. Et si pour une date tu connais l'année et le mois mais pas le jour par exemple, tu fais 2 inserts, pourquoi te compliquer la vie avec des triggers ?
__________________
La théorie, c'est quand on sait tout mais que rien ne fonctionne. La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi ! Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/ |
|
|
00
|
|
|
#8 |
|
Nouveau Membre du Club
![]() Inscription : septembre 2008 Messages : 68 ![]() |
Ok,
bien reçu pour ma part je ne connais pas MySQL mais c'est vrai que les triggers alourdissent. merci pour tout à bientot, cordialement, nicolas. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com