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 :

Retirer une heure à virgule dans une fonction


Sujet :

Développement SQL Server

  1. #1
    Membre éprouvé
    Inscrit en
    Avril 2007
    Messages
    1 247
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 247
    Par défaut Retirer une heure à virgule dans une fonction
    Bonjour
    Malgré mes recherche sur Goole je ne parviens pas à réaliser une requête vraiment toute simple.
    je souhaite soustraire une heure à virgule à une date.
    Prenons l'exemple ci dessous:
    je souhaite retirer 03h30 à la date du '20230407 10:30' et ainsi obtenir '20230407 07:00'.
    He ben j'obtiens '2023-04-07 07:30:00.000'.

    Comment faire pour afficher '03:30' dans ma ligne de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select
    DATEADD(hour, -(7/2),'20230407 10:30') as decalage
    Merci d'avance

  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
    DateAdd prend un entier en second argument.
    Il faut donc ajouter les heures et les minutes séparément :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select DATEADD(minute, 60*(-7.0/2) % 60, DATEADD(hour, -7.0/2,'2023-04-07 10:30')) as d;
     
    2023-04-07 07:00:00.000
    Attention également, conformément à la norme SQL SQL-Server conserve les types de données, select 7/2 renvoie 3.
    J'ai rajouté un .0 au 7 pour forcer la conversion en decimal.

  3. #3
    Membre éprouvé
    Inscrit en
    Avril 2007
    Messages
    1 247
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 247
    Par défaut
    Super Merci Waldar
    Pourrais tu m'expliquer ces 2 lignes de codes


  4. #4
    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
    Je n'avais pas les yeux en face des trous, c'est plus simple de tout convertir en minutes directement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select dateadd(minute, 60.0*(-7.0/2), '2023-04-07 10:30') as d;
    Si vos divisions sont plus complexes, vous pouvez même le faire en secondes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select dateadd(second, 3600.00*(-7.00/2), '2023-04-07 10:30') as d;
    Pour les questions, le premier c'est un modulo 60, ce qui permet de trouver le reste des minutes - vu que les heures je les ajoute dans le second dateadd.

    Pour le 7.0/2 je l'ai écrit !

Discussions similaires

  1. Réponses: 4
    Dernier message: 02/06/2004, 16h35
  2. Transmission d'un objet crée dans une fonction
    Par EvilAngel dans le forum ASP
    Réponses: 2
    Dernier message: 10/05/2004, 20h19
  3. Utilisez MinimizeName() dans une fonction
    Par James_ dans le forum C++Builder
    Réponses: 7
    Dernier message: 07/05/2004, 18h05
  4. [Postgresql]Connecter à une autre base dans une fonction
    Par alex2205 dans le forum Requêtes
    Réponses: 2
    Dernier message: 05/05/2003, 11h30
  5. [Turbo Pascal] Allocation et désallocation de pointeurs dans une fonction
    Par neird dans le forum Turbo Pascal
    Réponses: 13
    Dernier message: 17/11/2002, 20h14

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