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

  1. #1
    Membre régulier 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
    Points : 109
    Points
    109
    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 habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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
    Points : 185
    Points
    185
    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
    "Le problème du monde, c'est que les imbéciles sont présomptueux et les gens intelligents bourrés de doutes" B. Russell

  3. #3
    Membre régulier 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
    Points : 109
    Points
    109
    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 habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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
    Points : 185
    Points
    185
    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.
    "Le problème du monde, c'est que les imbéciles sont présomptueux et les gens intelligents bourrés de doutes" B. Russell

  5. #5
    Membre régulier 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
    Points : 109
    Points
    109
    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 habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    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
    Points : 185
    Points
    185
    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))
    "Le problème du monde, c'est que les imbéciles sont présomptueux et les gens intelligents bourrés de doutes" B. Russell

+ 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