IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Des dates en chaînes


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé Avatar de Tillo
    Homme Profil pro
    Webmaster
    Inscrit en
    Octobre 2007
    Messages
    494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 494
    Points : 683
    Points
    683
    Par défaut Des dates en chaînes
    Bonjour tout le monde !

    Pour les besoins d'un projet, j'enregistre des événements dans une table SQL.
    Seulement voilà, les dates ne sont pas au format habituel (JJ-MM-AAAA), elles peuvent par exemple prendre les formes suivantes:

    - vers octobre 1985
    - après octobre 1985
    - vers 1905
    - entre 1902 ou 1906
    - vers an XII
    - 25 novembre 1925
    - mai 1702

    Je n'ai donc pas pu mettre le champ de ma base de données dans un format correspondant à une date, en attendant il est en varchar. Je sais que ce n'est génial, mais ça m'a permis d'avancer un peu dans mon projet.

    Je me permets de faire appel à vous car j'ai besoin de travailler sur les dates, notamment pour les classer par ordre chronologique ou pour extraire les années.
    Je ne sais pas trop quoi faire. Je sais qu'il faut que j'abandonne le varchar pour un format plus approprié mais je ne sais franchement pas lequel.

    Merci et à bientôt,
    Alexis.
    J'aimerais mieux être le premier dans ce village que le second à Rome. (Caius Julius Caesar)

    J'ai aussi un site sur la Grande Guerre: Histoires de Poilus

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Si tu n'as pas de date avant notre ère, tu peux utiliser une colonne DATE.

    Sinon, il y a des base de données comme PostgreSQL qui permettent une plus grande amplitude (à partir de - 4713).

    Sinon il va falloir stocker un entier ou plusieurs entiers pour représenter ta date.

    Dans tous les cas garde ta colonne contenant la version littéral de la date et utilise d'autres colonnes pour gérer le classement.
    Ta valeur de classement doit seulement permettre de placer correctement les événements les un par rapport aux autres.
    Réfléchis comment tu positionnerais sur une feuille de papier "après octobre 1985". Pour moi c'est sur novembre 1985.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éclairé Avatar de Tillo
    Homme Profil pro
    Webmaster
    Inscrit en
    Octobre 2007
    Messages
    494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 494
    Points : 683
    Points
    683
    Par défaut
    Merci pour cette piste.

    Citation Envoyé par sabotage Voir le message
    Réfléchis comment tu positionnerais sur une feuille de papier "après octobre 1985". Pour moi c'est sur novembre 1985.
    C'est un projet lié à la généalogie. Les dates correspondent aux événements de la vie d'une personne ou d'une famille.
    "après octobre 1985" peut donc signifier autant novembre 1985 que février 2016. C'est juste une date quelconque entre octobre 1985 et le futur.
    J'aimerais mieux être le premier dans ce village que le second à Rome. (Caius Julius Caesar)

    J'ai aussi un site sur la Grande Guerre: Histoires de Poilus

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Certes mais si dois le matérialiser sur une frise de temps, "une position quelconque" ça n'existe pas.
    De la même façon, si tu dois le classer par rapport à un autre événement, il ne peut pas être à une position quelconque, il faut bien faire le choix d'une position.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre éclairé Avatar de Tillo
    Homme Profil pro
    Webmaster
    Inscrit en
    Octobre 2007
    Messages
    494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 494
    Points : 683
    Points
    683
    Par défaut
    Mouais, je vois ce que tu veux dire.
    Je vais réfléchir à tout ça, merci pour les conseils.
    J'aimerais mieux être le premier dans ce village que le second à Rome. (Caius Julius Caesar)

    J'ai aussi un site sur la Grande Guerre: Histoires de Poilus

  6. #6
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 303
    Points : 1 380
    Points
    1 380
    Par défaut
    Bonjour,

    j'enregistrerais la date telle quelle, en varchar, mais je mettrais aussi deux séries de trois colonnes (jour, mois, année) de type varchar dans ma base (une pour la date de début ou seule, et une autre pour la date de fin), et aussi une colonne précisant l'approximation faite (date exacte, vers, entre, après, avant, etc.). Il faut aussi créer un analyseur syntaxique pouvoir enregistrer la date dans les différentes colonnes.
    Cela permet d'afficher la date telle que fournie et de l'enregistrer dans un format utilisable dans un traitement.
    Christophe

    Pensez à mettre quand c'est le cas.

  7. #7
    Membre éclairé Avatar de Tillo
    Homme Profil pro
    Webmaster
    Inscrit en
    Octobre 2007
    Messages
    494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 494
    Points : 683
    Points
    683
    Par défaut
    Merci, je crois que c'est ce que je vais faire.
    J'aimerais mieux être le premier dans ce village que le second à Rome. (Caius Julius Caesar)

    J'ai aussi un site sur la Grande Guerre: Histoires de Poilus

Discussions similaires

  1. Saisie des dates
    Par J-P-B dans le forum XMLRAD
    Réponses: 5
    Dernier message: 04/07/2003, 11h08
  2. Manipuler des dates...
    Par Ti Jen-tsie dans le forum Langage
    Réponses: 4
    Dernier message: 26/06/2003, 11h46
  3. [MCD] [MCD] Gestion des dates
    Par brionne dans le forum Schéma
    Réponses: 3
    Dernier message: 30/05/2003, 13h01
  4. Réponses: 3
    Dernier message: 19/03/2003, 15h19
  5. Fonctions de manipulation des chaines et des dates
    Par Fares BELHAOUAS dans le forum Débuter
    Réponses: 3
    Dernier message: 09/11/2002, 22h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo