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 :

[Date] SQL Server 2005


Sujet :

MS SQL Server

  1. #1
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2007
    Messages : 76
    Points : 49
    Points
    49
    Par défaut [Date] SQL Server 2005
    Bonjour à tous,

    Un petit priblème courant que je n'arrive pas à résoudre malgrès toute la documentation en ligne (pas réussi à l'adapter à mon problème).

    Voilà, je récupère la date courante grâce à un SELECT GETDATE() et je souhaite comparé cette valeur avec une table de ma base de donnée qui contient toute les dates des 30 prochaines années.

    Problème :

    Getdate : 2007-12-31
    Ma table : 31/12/2007

    Voila le code que j'ai fait qui ne fonctionne toujours pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    DECLARE @jour INT
    DECLARE @mois INT
    DECLARE @annee INT
    DECLARE @complet NVARCHAR
     
     
    SET @jour = (SELECT DATEPART(day, GETDATE()))
    SET @mois = (SELECT DATEPART(month, GETDATE()))
    SET @annee = (SELECT DATEPART(year, GETDATE()))
     
    SET @complet = (SELECT(@jour+'/'+@mois+'/'+@annee))
    SET @complet = (SELECT CONVERT(SMALLDATETIME, @complet))
    Merci d'avance pour votre aide.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    Points : 923
    Points
    923
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select convert(varchar(10),GETDATE(),103)

  3. #3
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2007
    Messages : 76
    Points : 49
    Points
    49
    Par défaut
    Merci à toi pour ta réponse.

    Cependant je ne vois pas bien comment l'utiliser.
    A la place de ma dernière ligne ? ou en ajout en début de bloc après les déclarations de mes variables ?

  4. #4
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    Points : 923
    Points
    923
    Par défaut
    en supposant que le champ de ta_table contenant les dates sur 30 ans s'appelle mon_champ_date

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * from ta_table where convert(varchar(10),GETDATE(),103)=mon_champ_date

  5. #5
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2007
    Messages : 76
    Points : 49
    Points
    49
    Par défaut
    Merci de ta réponse.

    Le problème est que celà ne me retourne aucun résultat etant donné que Getdate me donne 2007-18-06 et il compare ce resultat dans la base de donnée qui est formé ainsi : 18/06/2007.

    Donne la requete fonctionne mais aucun resultat (logique).

    Il faut donc effectuer la transformation avant ce select que tu m'a transmis j'imagine.

  6. #6
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    Points : 923
    Points
    923
    Par défaut
    il doit y avoir un autre pb car

    SELECT * FROM ta_table WHERE convert(varchar(10),GETDATE(),103)=mon_champ_date
    revient a écrire

    SELECT * FROM ta_table WHERE '18/07/2007'=mon_champ_date
    essaies directement la seconde requête; si pas de résultat cela peut venir de:

    - ton mon_champ_date est un champ date et pas varchar

    d'ailleurs... postes le résultat de cette requête

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select top 1 mon_champ_date from ta_table

  7. #7
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2007
    Messages : 76
    Points : 49
    Points
    49
    Par défaut
    Le résultat de ta derniere requete me retourne ceci :

    2000-01-01 00:00:00

    Au vu de ta réponse je précise que le champ dans ma base de donnée est de type SMALLDATETIME.

    Par contre, je ne comprend pas le résultat de cette requete ... en effet lorsque je regarde ma table, je vois les données sous cette forme :

    31/01/2007 00:00:00

    C'est pour ca que je m'embetais a changeais le format de la date ... mais apparement le select me retourne un format different de celui affiché en visuel sur la table depuis SQL serveur ....

    Désolé et merci encore de ton aide, j'avoue que l'arrive toujours a comprendre a peu près ce que je dois faire mais là ces histoire de dates ... je cale.

  8. #8
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    Points : 923
    Points
    923
    Par défaut
    donc pour ta requete fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM ta_table WHERE cast(convert(varchar,GETDATE(),120) as smalldatetime)=mon_champ_date
    en fait le format compris par TOUTES les bases SQL ( je dis bien toutes mais les vraies bases SQL , pas access,fox) est le format CANONIQUE
    YYYY-MM-DD HH:MM:SS
    mais certains explorateurs sql transforment, a l'affichage, le format suivant les paramètres régionaux => le pourquoi de ton écart
    ex: si tu passes en langue anglaise, je pense qu'il te retournera le format US a savoir YYYY/DD/MM HH:MM:SS

  9. #9
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2007
    Messages : 76
    Points : 49
    Points
    49
    Par défaut
    Merci à toi pour tes réponses et tes explications. Je comprends mieux ton raisonnement et par là même ta dernière requête.

    Cependant je viens de la tester et elle ne me renvoie rien. Si je fais un SELECT *, ou un SELECT mon_champ_date cela modifie bien le nombre de colonne renvoyées, mais aucune données a l'intérieur (et aucun message d'erreur non plus )

    On on donc supposer que c'est la clause WHERE qui n'est aps prise en compte.

  10. #10
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2007
    Messages : 76
    Points : 49
    Points
    49
    Par défaut
    Je précise que cette requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM ta_table WHERE '18/07/2007'= mon_champ_date
    et cette requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM ta_table WHERE '2007-07-18'= mon_champ_date
    fonctionnent toutes les deux.

  11. #11
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    Points : 923
    Points
    923
    Par défaut
    postes la requête EXACTE que tu fais quand je te dis de faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM ta_table WHERE cast(convert(varchar,GETDATE(),120) AS smalldatetime)=mon_champ_date

  12. #12
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2007
    Messages : 76
    Points : 49
    Points
    49
    Par défaut
    La voici (j'ai juste changer la position de mon champ pour voir si ca changait quelque chose)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM CALENDRIER WHERE ID_Date = cast(convert(varchar,GETDATE(),120) AS smalldatetime)
    Merci encore

  13. #13
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    Points : 923
    Points
    923
    Par défaut
    je suis un ...

    cast(convert(varchar,GETDATE(),120) AS smalldatetime
    retourne '2007-07-18 15:27:23' et pas '2007-07-18 00:00:00' ( valeur que tu as en stock). il faut donc

    SELECT * FROM CALENDRIER WHERE ID_Date = cast(convert(varchar(10),GETDATE(),120) AS smalldatetime)
    en limitant a 10 caractères, tu supprime les heures, minutes et secondes donc ensuite le CAST les mets a 0

  14. #14
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2007
    Messages : 76
    Points : 49
    Points
    49
    Par défaut
    Merci beaucoup !

    Cette requête fonctionne désormais parfaitement !

    J'ai failli ne pas compendre encore car j'étais persuadé que le (10) etait déjà mis mais en fait il etait uniquement dans une des première requête que tu m'as communiqué, après cela avait été retiré dans les suivantes ^^

    Merci encore c'est vraiment super, et en dehors du fait que la requete fonctionne, j'y vois un peu plus clair dans l'utilisation des dates !

    Bonne journée

  15. #15
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    Points : 923
    Points
    923
    Par défaut
    mets la balise RESOLU s'il te plait

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

Discussions similaires

  1. Formatage date Sql Server 2005
    Par amirad dans le forum MS SQL Server
    Réponses: 11
    Dernier message: 06/07/2009, 10h36
  2. comparaison date SQL Server 2005
    Par stephyugh dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 11/12/2007, 18h12
  3. Réponses: 1
    Dernier message: 05/12/2007, 21h44
  4. Date variable dans SQL server 2005 anglais
    Par denisr dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 15/06/2007, 11h19
  5. [C#][2.0][SQL Server 2005] Format date dans GridView
    Par just1980 dans le forum ASP.NET
    Réponses: 4
    Dernier message: 13/11/2006, 22h45

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