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

Développement SQL Server Discussion :

Extraire l'heure d'une date dans une requête


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut Extraire l'heure d'une date dans une requête
    Bonjour tout le monde

    Je suis un peu ébahi par le résulta de mes recherches. Je viens de relire toute la MSDN concernant les dates et heures et je en trouve pas le moyen d'extraire l'heure ou les minutes d'une date complète dans une requete.

    Je trouve bizarre de ne pas avoir de fonction tel que DAY(ladate) qui remonte les heurs ou les minutes.

    Même mon ami Google ne me remonte rien, comme si les fonctions n'éxistaient pas ! ! !

    Vous avez une idée ?

  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 : 47
    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
    Vous pouvez utiliser DATEPART :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    select getdate() as jour_complet,
           DATEPART(hh, getdate()) as heure, 
           DATEPART(mi, getdate()) as minutes,
           DATEPART(ss, getdate()) as secondes;
     
    jour_complet            heure       minutes     secondes
    ----------------------- ----------- ----------- -----------
    2010-01-27 16:41:00.177 16          41          0

  3. #3
    Invité
    Invité(e)
    Par défaut
    tu as aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select convert(varchar, getdate(), 108 )
    mais tu te retrouves avec une variable en varchar...

  4. #4
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    Merci pour votre aide, cela m'a été fort utile.

    @Jerome_Mtl : bizarremtn lorsque j'ai fait ça hier, ça me donnait la date et pas l'heure ! ! ! Mais ce matin, ça marche, dcidment, l'infotmatique àce côté magique qui est vraiment "plaisant"

    @Waldar : avec le DATEPART, ça marche bien, enfin presque. Mes minute sorte avec un seul chifre lorsque n'ont qu'un seul cihffre. A part une manipulation du VARCHAR et d'un LEFT bien placé, y a pas un moeyn de lui scotcher un zéro devant.

    Remarque, j'ai le même problème avec les mois sur l'utilisation du MONTH

    Faut savoir aussi que je suis obligé de passer par un CAST avant car ma date complète est stockée au format VARCHAR sans la table.

    Un peu de code pour illustrer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    'Le '  + CAST(DAY(CAST(DM1.Valeur_Info AS DATETIME)) AS VARCHAR(3)) + '/' +
    CAST(MONTH(CAST(DM1.Valeur_Info AS DATETIME))  AS VARCHAR(3)) + '/' +
    CAST(YEAR(CAST(DM1.Valeur_Info AS DATETIME))  AS VARCHAR(4)) + ' à ' + 
    CAST(DATEPART(hh, CAST(DM1.Valeur_Info AS DATETIME)) AS VARCHAR(2)) + ' H ' +
    CAST(DATEPART(mi, CAST(DM1.Valeur_Info AS DATETIME)) AS VARCHAR(2)) AS DateSortie,
    DM1.Valeur_Info contient la date comme ça :
    29/01/2010 11:0:00
    le but est d'obtenir une chaine qui ferait :
    Le 29/01/2010 à 11 H 00
    Et le nec plus ultra cerati d'avoir le mois en lettre
    Le 29 Janvier 2010 à 11 H 00
    Mais là, je trouve pas le moyen.

    Merci pour votre aide.

  5. #5
    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 : 47
    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
    29/01/2010 11:0:00
    Vous voullez dire :
    ?

  6. #6
    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 : 47
    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
    Il faut le faire avec une succession de conversions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    With SR (dt) as
    (
    select convert(datetime, '29/01/2010 11:00:00', 103)
    )
    select 'Le ' + right('00' + DATENAME(dd, dt), 2) +
           ' ' + DATENAME(Month, dt) +
           ' ' + DATENAME(yyyy, dt) +
           ' à ' + DATENAME(hour, dt) +
           ' H ' + right('00' + DATENAME(minute, dt), 2) as res
      from SR;
     
    res
    ------------------------------------
    Le 29 January 2010 à 11 H 00
    C'est quand même la misère ces formats de date dans SQL Server...
    La même chose en Oracle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    With SR AS
    (
    select to_date('29/01/2010 11:00:00', 'dd/mm/yyyy hh24:mi:ss') as dt from dual
    )
    select to_char(dt, '"Le "dd Month yyyy "à" hh24" H "mi') as res
      from SR;
     
    RES                           
    ------------------------------
    Le 29 Janvier   2010 à 11 H 00
    Une fonction, un format paramétrable à volonté !

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

Discussions similaires

  1. [MySQL] insérer une date dans une table dans un format compréhensible
    Par laurentSc dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 16/08/2014, 11h10
  2. insérer une date dans une table dans un format compréhensible
    Par laurentSc dans le forum Langage SQL
    Réponses: 5
    Dernier message: 08/08/2014, 16h31
  3. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13
  4. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48
  5. Inserer une date d'une table dans une autre table
    Par petitetre dans le forum Langage SQL
    Réponses: 8
    Dernier message: 18/04/2007, 20h16

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