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 :

Comparer deux dates


Sujet :

Développement SQL Server

  1. #1
    Membre habitué
    Inscrit en
    Octobre 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 8
    Par défaut Comparer deux dates
    Salut a tous,
    J essaye de comparer deux dates dans la query suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT * 
    FROM EHA_LOCAL.dbo.ExpenseSnapshoot
    WHERE CURRENT_TIMESTAMP >= CONVERT(VARCHAR(25),Dateobten,121);
    Cette query ne s'execute pas, et me donne le message d'erreur suivant:
    "Conversion failed when converting datetime from character string".
    ça fais 2 jours que je m'arrache les cheveux pour trouver l'erreur. J apprecierai enormement une "aide"!

    NB: Dateobten est de type datetime, et j ai verifie que CURRENT_TIMESTAMP, aussi bien que Dateobten sont sous le format 121!

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 992
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 992
    Billets dans le blog
    6
    Par défaut
    Ce que vous faites est idiot : vous essayez de comparer deux dates mais vous transtyper l'un des dates en chaine de caractère !

    Votre requête doit s'écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *
    FROM EHA_LOCAL.dbo.ExpenseSnapshoot
    WHERE CURRENT_TIMESTAMP >= Dateobten
    Et évitez le SELECT *

    Lisez les articles suivants que nous avons écrit :
    http://sqlpro.developpez.com/cours/sqlaz/erreurs/#L7
    http://baptiste-wicht.developpez.com...-sql/datetime/

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre habitué
    Inscrit en
    Octobre 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 8
    Par défaut
    Merci pour cette prompte reponse. J ai evidemment commencer par ecrire ma queryavec (WHERE Current_timestamp >= dateobten). Cette query s'excute sans pb dans SQL Server 2000, mais c'est un autre pb avec SQL Server 2005 (Conversion failed when converting datetime from character string). Cette query s'excute bien avec une expression literale telleque '2008-12-31 00:00:00.000' a la place de dateonbten (dans SQL Server 2005 ), d'ou cette tentative de convertir dateobten en string.

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 992
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 992
    Billets dans le blog
    6
    Par défaut
    Postez le SQL DDL de vos tables. Sans cela difficile de vous répondre.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Membre habitué
    Inscrit en
    Octobre 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 8
    Par défaut
    et voila,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE TABLE dbo.ExpenseSnapshoot
    {
    	Allotment(char(15), primary key, not null),
    	Pays(varchar(25), not null),
    	Dateobten(datetime, null),
    	Datexpir(datetime, null),
    	Alloted (money, null),
    	Disburs(money, null),
    	Disbursed(float, null)
    }
    Merci pour votre aide!

    a+

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 992
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 992
    Billets dans le blog
    6
    Par défaut
    Il n'y a pas de raison pour cela s'exécute mal. Le problème doit venir d'ailleurs... A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  7. #7
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 35
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT     Allotment, Pays, Dateobten, Datexpir, Alloted, Disburs, Disbursed
    FROM         ExpenseSnapshoot
    WHERE     (CURRENT_TIMESTAMP >= Dateobten)
    fonctionne sur sql server 2005 avec ton schéma
    Comme dit sqlpro : la vérité est ailleurs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE TABLE ExpenseSnapshoot
    (
    Allotment char(15) not null,
    Pays varchar(25) not null,
    Dateobten datetime null,
    Datexpir datetime null,
    Alloted  money null,
    Disburs money null,
    Disbursed float null
    )
    mon conseil : fait sauter les index, met des PK en int

Discussions similaires

  1. Comment comparer deux dates
    Par vodevil dans le forum Modules
    Réponses: 6
    Dernier message: 01/09/2005, 18h24
  2. comparer deux dates
    Par adel25 dans le forum C++
    Réponses: 3
    Dernier message: 23/08/2005, 20h29
  3. Comparer deux dates
    Par LoicH dans le forum C++Builder
    Réponses: 4
    Dernier message: 04/03/2005, 22h53
  4. comment comparer deux dates?
    Par billoum dans le forum C++Builder
    Réponses: 2
    Dernier message: 21/08/2004, 21h08

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