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 :

Convertir int en heure ?


Sujet :

MS SQL Server

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 41
    Points : 33
    Points
    33
    Par défaut Convertir int en heure ?
    Salut,

    voila j'ai un problème dans ma base de données j'ai un champ heure_resolution qui est en int ex : 683400000000 et moi je souhaiterais avoir un champ qui m'affiche l'heure comme cela : '18:59:00'

    En fait 68340 correspond à 18:59:00 mais en seconde...

    donc comment faire pour convertir mes secondes en heures et minutes ?

    c'est important car je dois effectuer des moyennes et c'est pas pratique avec des int..

    Merci d'avance

  2. #2
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 141
    Points : 176
    Points
    176
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    DECLARE @Hour AS int,
    		@Minute AS int,
    		@Second AS int
     
    SET @Hour   = 0
    SET @Minute = 0
    SET @Second = 68340
     
    SELECT convert(varchar,dateadd(ss,(@Hour*3600)+(@Minute*60)+@Second,0),108)
    J'espère que cela peut vous aider

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 41
    Points : 33
    Points
    33
    Par défaut
    Merci beaucoup,

    mais comment je fais directement avec le champ de ma base de données...

  4. #4
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 141
    Points : 176
    Points
    176
    Par défaut
    Alors pour ca, je vous conseil de créer une fonction SQL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    create function Time(@Hour int, @Minute int, @Second int)
    returns varchar(8)
    as
        begin			
        return convert(varchar,dateadd(ss,(@Hour*3600)+(@Minute*60)+@Second,0),108)
        end
    go
    Ensuite, vous pouvez utiliser votre fonction de la facon suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select dbo.time(0,0,MaTable.MonChamp) from MaTable
    Je passe 0 pour les 2 premiers paramètres car je ne les utilise pas, mais ils seront peut-être utilisé un jour ou l'autre.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 41
    Points : 33
    Points
    33
    Par défaut
    Merci j'ai testé.....

    la fonction marche..

    mais la requête me génère une erreur :

    Arithmetic overflow error converting expression to data type int.

  6. #6
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 141
    Points : 176
    Points
    176
    Par défaut
    Etes-vous sûr que votre champ est de type 'int' ?

    Car j'ai effectué le test et cela ne pose pas de problème.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 41
    Points : 33
    Points
    33
    Par défaut
    Mon champ est en fait de type : BIGINT

  8. #8
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 141
    Points : 176
    Points
    176
    Par défaut
    Un problème ... oui

    Car nous devons passer des "int" à la fonction.

    Alors, il faut modifier la fonction de cette facon:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE FUNCTION Time(@Hour BIGINT, @Minute BIGINT, @Second BIGINT)
    returns varchar(8)
    AS
        begin			
        RETURN convert(varchar,dateadd(ss,(@Hour*3600)+(@Minute*60)+@Second,0),108)
        end
    go

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 41
    Points : 33
    Points
    33
    Par défaut
    je comprends pas j'ai toujours cette même erreur quand je lance ma requête de select....

    Msg 8115, Level 16, State 2, Line 1
    Arithmetic overflow error converting expression to data type int.

  10. #10
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 141
    Points : 176
    Points
    176
    Par défaut
    Pouvez-vous essayer cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Convert(varchar,dateadd(ss,(0*3600)+(0*60)+MaTable.MonChamp,0),108) FROM MaTable

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 41
    Points : 33
    Points
    33
    Par défaut
    Non j'ai toujours cette même erreur.....

    En fait, j'ai importé ces données d'une BDD Mysql grace à integration services...

    j'ai crée un lot DTS qui importe les données de la BDD Mysql vers SQL server 2005...

    Dans la table Mysql le format est bon (time) c'est quand j'importe mes données dans la base sql server que ce me les transforment dans ce format...

    donc je sais pas si vous connaisez sql integration service, peut être que je peux les convertir directement dans mon lot...

  12. #12
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 141
    Points : 176
    Points
    176
    Par défaut
    Cela est très bizarre en effet.

    Par contre, peut-être que ceci va vous aider:

    Dans un DTS, il est possible de choisir le type de destination:

    A l'écran de sélection de la source d'importation vous avez une grille reprennant:

    - la source
    - la destination
    - et un bouton "transformer"

    Si vous cliquez sur ce bouton, une fenêtre s'ouvre et reprend une liste des champs à importer.

    Et là vous avez une colonne "type" que vous pouvez modifier avant l'importation.

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 41
    Points : 33
    Points
    33
    Par défaut
    En fait voila ce que j'ai :

    je suis sous SSIS 2005 :

    j'ai tout d'abord une DataReader Source ou je dois sélectionner ma source de données d'importation ainsi que mes champs à importer à l'aide d'une requête sql.

    Puis je lis mon dataReader à un SQL SERVER Destination.

    je ne vois pas le champ transformer dont vous parlez ?

  14. #14
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 141
    Points : 176
    Points
    176
    Par défaut
    Ok je vois.

    Je vous parlais de la configuration d'un DTS sous 2000.

    Je ne suis plus au travail et de mémoire je ne connais pas la configuration des écrans en 2005. (cela ne doit pas être fort différent de la version 2000)

    Si personne n'a répondu d'ici demain, je le ferai dès le matin.

    Edit :
    Ceci en attendant :
    http://technet.microsoft.com/fr-fr/l.../ms140321.aspx
    http://odelmotte.developpez.com/tuto...=page_5#L5-1-4
    http://odelmotte.developpez.com/tuto...?page=sommaire

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 41
    Points : 33
    Points
    33
    Par défaut
    En fait, quand je mets un data source reader pour lire mes données de ma base Mysql, SSIS me transforme le type de mon champ "Time" en "DT_I8".... j'essaye de le transformer avec un data conversion mais j'obtiens toujours en sortie des entiers.....

    c'est dommage que sql server 2005 ne gère pas le type "Time".

Discussions similaires

  1. convertir int (32bits) en char(8bit)
    Par madjidri dans le forum C++
    Réponses: 2
    Dernier message: 28/05/2007, 18h50
  2. [FAQ] Convertir int to String
    Par mamid1706 dans le forum C++
    Réponses: 2
    Dernier message: 09/05/2007, 15h20
  3. convertir int en Object et int en char
    Par djanos dans le forum Langage
    Réponses: 5
    Dernier message: 24/02/2007, 18h58
  4. Convertir int en chaîne de caractère
    Par be_tnt dans le forum Réseau
    Réponses: 44
    Dernier message: 25/04/2006, 15h35
  5. [Conversion]convertir int[] en bytes[]
    Par tony_big_guy dans le forum Langage
    Réponses: 5
    Dernier message: 02/05/2005, 15h47

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