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 :

Comparaison de dates


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de innova
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 185
    Par défaut Comparaison de dates
    Bonjour,

    Je veux effectuer une comparaison entre des dates.

    J'ai dans une table " error_table " le champ err3 qui contient par exemple comme date : 2007/06/01-11:50:37.

    Je souhaite à présent savoir si cette date est comprise en deux autres dates qui figurent dans une autre table.

    En résumé :
    ------------

    Table " error_table " avec champ err3 de type varchar.

    Contient par exemple : 2007/06/28-09:50:37

    Table " result_table " avec les champs " time_start " et " time_stop " de type datetime.

    Contient par exemple : 28/06/2007 08:37:43 28/06/2007 10:38:06

    Je souhaite donc savoir si la date contenue dans le champ err3 est comprise entre les dates des champs " time_start " et " time_stop ".

    Attention, le champ err3 est du format YYYY/MM/DD-HH-MM-SS

    Comment faire ?

    MErci
    ++

  2. #2
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 142
    Par défaut
    Ta chaine est au format "2007/06/01-11:50:37" ou au format "YYYY/MM/DD-HH-MM-SS" ? (y'a une ptite incohérence dans ton message).

    Si elle est au format de type "2007/06/01-11:50:37", alors tu peux faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    convert(datetime, replace(err3,'-',' '))
    pour convertir ton varchar en datetime.
    Avec ça tu pourras faire des comparaisons de datetime tout ce qu'il y a de plus classique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ... WHERE convert(datetime, replace(err3,'-',' ')) > time_start AND convert(datetime, replace(err3,'-',' ')) < time_stop

  3. #3
    Membre éclairé Avatar de innova
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 185
    Par défaut
    Citation Envoyé par Lawyer666
    Ta chaine est au format "2007/06/01-11:50:37" ou au format "YYYY/MM/DD-HH-MM-SS" ? (y'a une ptite incohérence dans ton message).

    Si elle est au format de type "2007/06/01-11:50:37", alors tu peux faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    convert(datetime, replace(err3,'-',' '))
    pour convertir ton varchar en datetime.
    Avec ça tu pourras faire des comparaisons de datetime tout ce qu'il y a de plus classique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ... WHERE convert(datetime, replace(err3,'-',' ')) > time_start AND convert(datetime, replace(err3,'-',' ')) < time_stop
    Bonjour,

    En fait le format de err3 est celui avec un tiret.

    Pourrais-tu me dire exactement la requete sql ?

    J'ai fait ceci pour pour tester la date :

    declare

    @str varchar(500),
    @time datetime

    set @str='2007/06/01-11:50:37'

    set @time = convert(datetime, REPLACE(@str,'-',' '))

    print @time

    Pourrais-tu m'aider à construire la requete ?

    Je te remercie d'avance.
    ++

  4. #4
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 142
    Par défaut
    Mais que souhaites-tu afficher au final avec ta requête ?
    Veux-tu récupérer chacune des dates err3 avec un booléen indiquant si la date est oui ou non entre les bornes time_start & time_stop ?
    Ou veux-tu juste afficher les dates err3 qui se situent entre les bornes suscitées ?

    Si tu veux juste récupérer les dates qui se situent entre les 2 bornes, une requête tout simple suffit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT err3
    FROM error_table, result_table
    WHERE convert(datetime, REPLACE(err3,'-',' ')) > time_start AND convert(datetime, REPLACE(err3,'-',' ')) < time_stop
    Après je ne connais pas la structure de tes tables, mais si chaque err3 est lié par une clé à un time_start et un time_from spécifique, alors il faudra que tu fasses des jointures en plus.

  5. #5
    Membre éclairé Avatar de innova
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 185
    Par défaut
    Citation Envoyé par Lawyer666
    Mais que souhaites-tu afficher au final avec ta requête ?
    Veux-tu récupérer chacune des dates err3 avec un booléen indiquant si la date est oui ou non entre les bornes time_start & time_stop ?
    Ou veux-tu juste afficher les dates err3 qui se situent entre les bornes suscitées ?

    Si tu veux juste récupérer les dates qui se situent entre les 2 bornes, une requête tout simple suffit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT err3
    FROM error_table, result_table
    WHERE convert(datetime, REPLACE(err3,'-',' ')) > time_start AND convert(datetime, REPLACE(err3,'-',' ')) < time_stop
    Après je ne connais pas la structure de tes tables, mais si chaque err3 est lié par une clé à un time_start et un time_from spécifique, alors il faudra que tu fasses des jointures en plus.
    Bonjour,

    En fait,

    J'ai deux tables :

    - error_table
    - scan_info_table

    J'ai un champ err3 de type varchar dans la table error_table.

    J'ai deux champs time_start et time_stop de type datetime dans la table scan_info_table.

    Je dois d'abord soustraire deux heures de tous tous records contenant la date/heure (err3 ) de la table error_table.

    Ensuite, je dois comparer toutes ces dates/heures afin de savoir si elles sont comprises entre tous le records de la table scan_info_Table via le time_Start et le time_stop.

    si oui, je dois les copier dans une nouvelle table .

    Comment faire ?


    MErci
    ++

  6. #6
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 142
    Par défaut
    Citation Envoyé par innova
    Bonjour,

    En fait,

    J'ai deux tables :

    - error_table
    - scan_info_table

    J'ai un champ err3 de type varchar dans la table error_table.

    J'ai deux champs time_start et time_stop de type datetime dans la table scan_info_table.

    Je dois d'abord soustraire deux heures de tous tous records contenant la date/heure (err3 ) de la table error_table.
    Cette requête devrait fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE error_table
    SET err3 = replace(replace(convert(varchar, DATEADD(hour, -2, convert(datetime, REPLACE(err3,'-',' '))), 120),'-','/'),' ','-')
    GO
    Ensuite, je dois comparer toutes ces dates/heures afin de savoir si elles sont comprises entre tous le records de la table scan_info_Table via le time_Start et le time_stop.

    si oui, je dois les copier dans une nouvelle table .

    Comment faire ?


    MErci
    ++
    Si tu dois créer toi même ta nouvelle table, alors il faut commencer par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CREATE TABLE newtable (
    err3valid varchar(50)
    )
    GO
    Ensuite si j'ai bien compris, tu ne souhaites garder que les err3 qui sont supérieurs au Max des time_start et inférieurs au Min des time_stop ?
    Si c'est bien ça que tu veux, alors voila une requête qui devrait fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    INSERT INTO newtable(err3valid)
    (SELECT err3
    FROM error_table
    WHERE convert(datetime, REPLACE(err3,'-',' ')) > (SELECT Max(time_start) FROM scan_info_table) AND convert(datetime, REPLACE(err3,'-',' ')) < (SELECT Min(time_stop) FROM scan_info_table))

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

Discussions similaires

  1. comparaison de dates javascript
    Par SpaceFrog dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 12/07/2005, 08h45
  2. comparaison de dates
    Par pmithrandir dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 02/06/2005, 16h12
  3. comparaison de date
    Par nickoshiba dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 15/03/2005, 15h48
  4. Comparaison de dates
    Par Tapioca dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 16/06/2004, 15h55
  5. Problème de comparaison de dates
    Par MiJack dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/03/2004, 21h43

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