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

Langage SQL Discussion :

Traitement des dates dans une vue


Sujet :

Langage SQL

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 254
    Par défaut Traitement des dates dans une vue
    Bonjour,
    Je stocke dans ma base de données SQL Server des dates au format US (ex : 20081121). J'ai une vue et je voudrais afficher les dates au format européen (21/11/2008), sachant que la date peut etre aussi : 200811 ou encore 2008.
    Si qqu'un peut m'aider pour le code a écrire (dans la vue) car la je bloque....
    Merci bp
    Cédric

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    C'est donc dans un champ varchar ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 254
    Par défaut
    Désolé pour le temps que j'ai mis a répondre. Oui c'est varchar

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 254
    Par défaut
    ou plutot char(8) pardon, enfin toute facon ca change pas grand chose à mon problème

  5. #5
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Vu tous les cas possibles, ça va être un peu difficile de trouver une méthode générique :
    - 20080101
    - 200811
    - 080101
    - 0811
    - 2008011
    - 2008101
    - 08011
    ...

    Si la table n'est pas trop grosse, il faudrait examiner les cas possibles et les traiter par paquets.
    - Commencer par ceux qui ont exactement 8 caractères et qui sont donc en principe formatés AAAAMMJJ. Il est facile d'isoler les différentes parties et de convertir en date.
    - Si toutes les années sont de la forme AAAA on peut progresser avec ce qui suit...
    - Si les dates restantes sont toutes de la forme AAAAMJ il sera également facile de séparer les parties et de convertir.
    - Si par contre vous avez des AAAAMMJ et des AAAAMJJ, il va falloir détecter les groupes (5ème & 6ème caractères) > 12 pour en déduire qu'en fait c'est une date de la forme AAAAMMJ
    - Si par contre vous avez de joyeux mélanges engendrant des dates pouvant être interprétées de plusieurs façon, bon courage pour trouver la bonne, à moins d'avoir accès au logiciel source qui a pondu cette horreur !
    Stocker une date dans une colonne de type CHAR ou VARCHAR est une aberration !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 254
    Par défaut
    Dans mon cas, les seuls cas possibles sont :
    AAAAMMJJ
    AAAAMM
    AAAA

    Pourquoi c'est une aberration ?

  7. #7
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Disons qu'il vaut mieux stocker les dates dans des type datetime plutôt que char, c'est plus sain.

    Et une fois que vous avez la date, il est extrèmement simple d'en déduire l'année, le trimestre, le mois, la semaine...

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 254
    Par défaut
    Oui c'est possible mais si je le stocke dasn une colonne type DateTime au format AAAAMMJJ, j'ai toujours le problème pour l'afficher au format européen dans ma vue...non ?

  9. #9
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par Cedric33 Voir le message
    Dans mon cas, les seuls cas possibles sont :
    AAAAMMJJ
    AAAAMM
    AAAA
    Dans ce cas vous pouvez aussi faire trois colonnes Annee, Mois, Jour.
    Certaines lignes auront les colonnes Mois et/ou Jour à NULL.

    Pourquoi c'est une aberration ?
    La réponse a été donnée par Waldar. Mais dans votre cas c'est peut-être moins pratique. Voir solution ci-dessus.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 254
    Par défaut
    Effectivement c'est ptetre une bonne solution de passer par 3 colonnes. Il faut que j'y refléchisse un peu...
    Merci bp poru votre aide
    Cedric

  11. #11
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Citation Envoyé par Cedric33 Voir le message
    Oui c'est possible mais si je le stocke dasn une colonne type DateTime au format AAAAMMJJ, j'ai toujours le problème pour l'afficher au format européen dans ma vue...non ?
    Une colonne datetime n'a pas de format AAAAMMJJ.
    C'est un format datetime.

    Et pour l'affichage vous avez des fonctions de convertion, qui convertisse votre datetime en varchar.
    Par exemple : http://www.sql-server-helper.com/tips/date-formats.aspx

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 254
    Par défaut
    ha d'accord. J'avais pas compris ca en regardant sur le net. Je me renseignerai un peu plus sur ce format ca ne me fera pas de mal
    Merci encore
    Cédric

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 530
    Par défaut
    à mon avis le plus facile c'est quand même d'avoir en entrée (pour la saisie) un calendrier cliquable en javascript (ou flash) qui permettra d'inserer une date au bon format dans la base de donnée, c'est à dire YYYY-MM-DD.

    Attention pour le traitement suivant les - sont importants, et de toute façon un format Datetime comporte des - .

    Puis quand tu reccupère ta date dans la BDD il sufit de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $tabDate=explode('-', $dateDeMaBdd);
    tu as ainsi ton tableau avec jour, mois, année qui suffit d'organiser comme tu veux pour l'affichage final.

    Une petite fonction sur ces bases... ça fonctionne très bien

    @+

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 254
    Par défaut
    Dans mon cas, le calendrier n'est pas une bonne solution car les dates peuvent s'étaler sur plusieurs siècles. De plus l'utilisateur peut saisir une date sans mettre un jour particulier.

Discussions similaires

  1. Griser des actions dans une vue particulière
    Par stouky dans le forum W4 Express
    Réponses: 1
    Dernier message: 04/03/2008, 09h08
  2. Traitement des espaces dans une requete SQL
    Par edogawa dans le forum SQL
    Réponses: 4
    Dernier message: 30/10/2007, 14h49
  3. Réponses: 9
    Dernier message: 19/02/2007, 21h33
  4. [Formulaires] Traitement des données dans une autre page...
    Par sekiryou dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 04/03/2006, 10h08
  5. [PHP-JS] Traitement des données dans une autre page...
    Par sekiryou dans le forum Langage
    Réponses: 5
    Dernier message: 04/03/2006, 10h06

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