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

MS SQL Server Discussion :

Aide pour convertir des dates


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 45
    Par défaut Aide pour convertir des dates
    Bonsoir à tous ,

    Je souhaite convertir des dates :

    - dans la table j'ai Type de donnée Varchar (150) : 2010/01/15 00:00:00
    et je souhaite obtenir dans ma vue 15/01/2010

    - dans le 2eme cas j'ai 15/01/2010 avec le type de donnée datetime
    et je souhaite obtenir 01/2010 dans la vue

    je pense que le maitre elsuket va surgir

    Bonne soirée !

  2. #2
    Expert confirmé
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Par défaut
    LOL . Laissons surgir maître mvp elsuket dans ce cas !!

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 998
    Billets dans le blog
    6
    Par défaut
    Une date/heure doit être représenté avec un type de données datetime. Vous l'avez représenté avec du caractères... Ce qui est une vaste connerie ! A vous maintenant de vous amuser à manipuler la chaine de caractères avec des fonctions comme SUBSTRING....

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  4. #4
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Vous m'avez voulu ... me voilà, et je corrobore les propos de SQLPro.
    Mikedavem a eu la flemme de répondre

    A chaque donnée son type !

    Comment voulez-vous manipuler des dates en leur ajoutant des jours, en recherchant leur mois, leur année ?
    Rappelons que les dates sont stockées sous SQL Server sous la forme de deux entiers dans le cas où elles sont stockées sous le type DATETIME.
    Je répète donc (pour la énième fois ) que ce que vous voyez dans SSMS par exemple n'est qu'une représentation des dates.
    Il n'y a qu'à consulter la documentation de la fonction native CONVERT() pour s'en rendre compte : c'est pas moins de 20 représentations de dates qui sont proposées !

    Enfin, la comparaison de dates se fera forcément plus rapide en utilisant le type de données approprié, puisque les comparaison de nombres se fait plus vite que celles de chaînes.
    Sinon, pourquoi les aurait-on créés ?

    Première représentation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT CONVERT(CHAR(10), CAST('2010/01/15 00:00:00' AS DATETIME), 103)
    Que c'est moche !

    Deuxième représentation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT RIGHT(CONVERT(NCHAR(10), CAST('2010/01/15 00:00:00' AS DATETIME), 103), 7)
    Comme on le voit c'est tout aussi moche, et cela montre bien que la fonction CONVERT() n'est conçue que pour de la représentation de données, ce qui se fait normalement dans l'application

    @++

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 45
    Par défaut
    Bonsoir a vous les maîtres SQL !!!

    Désolé mais je SUBIS l'implantation de mon logiciel !!!!
    Les tables sont conçus comme ca et pas autrement !!!

    Aprés des recherches et l'aide de elsuket j'ai reussi à obtenir ceci :

    Convertion de '2009/01/19 00:00' vers 19/01/2009 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select CONVERT(varchar(10),CONVERT(smalldatetime,replace ('2009/01/19 00:00','/','-')+':00',120),103)
    Convertion de 19/01/2009 vers 01/2009 (identique à elsuket ) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select RIGHT(CONVERT(VARCHAR(10),colonne,103),7) from ma_table
    Merci et bonne soirée !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Aide pour convertir des heures en nombres
    Par Micky74 dans le forum Excel
    Réponses: 2
    Dernier message: 06/05/2010, 06h47
  2. Réponses: 4
    Dernier message: 31/10/2007, 15h11
  3. [VB6]Aide pour mettre format date avec inputbox
    Par Geliwy77 dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 28/01/2006, 20h13
  4. [Persistance]Aide pour sauver des données en XML
    Par le Daoud dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 21/06/2005, 13h39
  5. [CR8.5] Aide pour lier des etats
    Par Silvinho42 dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 28/04/2005, 10h11

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