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 :

Help!! Probleme avec les dates sur SQL SERVER


Sujet :

MS SQL Server

  1. #1
    Membre du Club Avatar de Nadaa
    Inscrit en
    Septembre 2003
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 133
    Points : 68
    Points
    68
    Par défaut Help!! Probleme avec les dates sur SQL SERVER
    Bonjour a toutes et a tous,

    J execute une requete sur SQL server qui prend en entree un smalldatetime. et la ca plante et me retourne l erreur suivante :

    The conversion of char data type to smalldatetime data type resulted in an out-of-range smalldatetime value.

    Mes dates sont de la forme par exple: 20.03.2003

    quand j affecte la valeur 20.10.2003 il me renvois un message d erreur mais quand je lui donne en entree 20/10/2003 ca marche..
    comment faire alors que j ai plusieurs champs de au moins 9000 ligne ou j ai les datye de la forme dd.mm.yyyy
    quelqu'un aurait une idée ?
    merci par avance
    Nadaa

  2. #2
    Membre émérite Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Points : 2 286
    Points
    2 286
    Par défaut
    Jouer sur la fonction convert ...
    ex :
    convert(smalldatetime,'19.04.2003',104)
    avec 104 => format dd.mm.yyyy
    Emérite, émérite je ne pense pas ... plutôt dans le développement depuis FORT FORT longtemps, c'est mon job, ça oui
    A part ça ... Il ne pleut jamais en Moselle !

  3. #3
    Membre du Club Avatar de Nadaa
    Inscrit en
    Septembre 2003
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 133
    Points : 68
    Points
    68
    Par défaut
    C est ce que j ai fait dans le code VB je fais :

    cnx.Execute (" SELECT CONVERT(smalldatetime, ' & Datetext0 & ', 104) AS Date1")

    Datetext c est une variable de type string, et la ca plante...je ne sais pas pourquoi

  4. #4
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 222
    Points : 19 551
    Points
    19 551
    Billets dans le blog
    25
    Par défaut
    C'est pas en smalldatetime qu'il faut convertir, mais en varchar(n)

    Sr DBA Oracle / MS-SQL / MySQL / Postgresql / SAP-Sybase / Informix / DB2

    N'oublie pas de consulter mes articles, mon blog, les cours et les FAQ SGBD

    Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !

  5. #5
    Membre du Club Avatar de Nadaa
    Inscrit en
    Septembre 2003
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 133
    Points : 68
    Points
    68
    Par défaut
    J ai converti en varchar mais il me renvois le message : Syntax Error Converting Character string to smalldatetime data type ..

  6. #6
    Membre émérite Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Points : 2 286
    Points
    2 286
    Par défaut
    Je comprends pas cette chaine
    =>
    cnx.Execute (" SELECT CONVERT(smalldatetime, ' & Datetext0 & ', 104) AS Date1")

    Je sais pas à partir de quel environnement/logiciel tu lances cette requête mais, indépendemment du pb smalldatetime ou (var)char(10)
    Il faudrait, à mon avis, passer par une variable temporaire
    style
    =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tmp = 'SELECT CONVERT(smalldatetime, ' & Datetext0 & ', 104) AS Date1'
    puis

    Emérite, émérite je ne pense pas ... plutôt dans le développement depuis FORT FORT longtemps, c'est mon job, ça oui
    A part ça ... Il ne pleut jamais en Moselle !

  7. #7
    fea
    fea est déconnecté
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 10
    Points : 12
    Points
    12
    Par défaut
    En vb:

    cnx.Execute (" SELECT CONVERT(smalldatetime, '" & Datetext0 & "', 104) AS Date1")

    Les guillemet permettent de sortir de ta chaine de caractère en cour et de pointer sur ta variable.
    Eh mec ! Elle est ou ma caisse ?

  8. #8
    En attente de confirmation mail
    Inscrit en
    Novembre 2002
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 51
    Points : 58
    Points
    58
    Par défaut
    Citation Envoyé par vttman
    Je comprends pas cette chaine
    =>
    cnx.Execute (" SELECT CONVERT(smalldatetime, ' & Datetext0 & ', 104) AS Date1")

    Je sais pas à partir de quel environnement/logiciel tu lances cette requête mais, indépendemment du pb smalldatetime ou (var)char(10)
    Il faudrait, à mon avis, passer par une variable temporaire
    style
    =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tmp = 'SELECT CONVERT(smalldatetime, ' & Datetext0 & ', 104) AS Date1'
    puis

    Comme l'a indiqué Fadace, le paramètre "style" dans la fonction CONVERT ne s'utilise que dans le cadre d'une mise en forme de datetime vers un char ou varchar, et pas le contraire.

  9. #9
    Membre du Club Avatar de Nadaa
    Inscrit en
    Septembre 2003
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 133
    Points : 68
    Points
    68
    Par défaut
    Concretement?
    ca fait une heure que je suis sur cette erreur et ca plante...

  10. #10
    Membre émérite Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Points : 2 286
    Points
    2 286
    Par défaut
    T'as essayé ça (composé de Fea et Fadace) ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cnx.Execute (" SELECT CONVERT(varchar(10), '" & Datetext0 & "', 104) AS Date1")
    Emérite, émérite je ne pense pas ... plutôt dans le développement depuis FORT FORT longtemps, c'est mon job, ça oui
    A part ça ... Il ne pleut jamais en Moselle !

  11. #11
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 766
    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 766
    Points : 52 563
    Points
    52 563
    Billets dans le blog
    5
    Par défaut
    VOUS ÊTES TOUS À CÔTÉ DE LA PLAQUE !!!

    (notez les accents dans les majuscules, je me suis forcé !!! ;-))

    Beaucouip plus simple.... Pas de CONVERT bien dégeu bien MS...

    1) j'envoi pour ma session l'ordre suivant au serveur :

    SET DATEFORMAT YMD


    2) dorénavant toutes mes conversion de char vers date se feront au format YYYY-MM-DD

    pas besoin de CON VERT, ni rouge, ni bleu !

    Exemple :

    SELECT CAST('2003-10-07' AS 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/ * * * * *

  12. #12
    Membre du Club Avatar de Nadaa
    Inscrit en
    Septembre 2003
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 133
    Points : 68
    Points
    68
    Par défaut
    Merci SQL Pro pour la reponse.. ..mais ou dois je specifier

    Set DATEFORMAT DATETIME ?? dans le code VB?

  13. #13
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 222
    Points : 19 551
    Points
    19 551
    Billets dans le blog
    25
    Par défaut
    Ben...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cnx.Execute ("SET DATEFORMAT DMY SELECT ...")
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cnx.Execute ("SET DATEFORMAT DMY"
    cnx.Execute ("SELECT ...")
    ... dans le cas ou tu garde ta session ouverte et que tu ne te connectes pas a chaque appel...
    Sr DBA Oracle / MS-SQL / MySQL / Postgresql / SAP-Sybase / Informix / DB2

    N'oublie pas de consulter mes articles, mon blog, les cours et les FAQ SGBD

    Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !

  14. #14
    Membre du Club Avatar de Nadaa
    Inscrit en
    Septembre 2003
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 133
    Points : 68
    Points
    68
    Par défaut
    Merciiiii Fadace, merci tout le monde..ca marche mnt..
    @+

  15. #15
    Membre à l'essai
    Inscrit en
    Juin 2003
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juin 2003
    Messages : 21
    Points : 14
    Points
    14
    Par défaut
    ouin mais si je ne veux que garder le YYYY-MM-DD que dois-je faire?

    je n'ai pas besoin des minutes pis des heures dans mon champ.. et je n'en veux pas.. celui-ci est du type smalldatetime

    merci
    bang bang Lucky Luke

  16. #16
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 766
    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 766
    Points : 52 563
    Points
    52 563
    Billets dans le blog
    5
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    /****************************************************************************/
    -- remplace un datetime par une datetime avec heure à zero
    /****************************************************************************/
    CREATE FUNCTION FN_DATETIME_AS_DATE (@DT DATETIME)  
    RETURNS DATETIME AS  
    BEGIN 
       RETURN CAST(FLOOR(CAST(@DT AS FLOAT)) AS DATETIME) 
    END
    GO
    voila une petite fonction pour ce faire...

    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/ * * * * *

  17. #17
    Membre du Club
    Profil pro
    ingénieur
    Inscrit en
    Octobre 2004
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : ingénieur

    Informations forums :
    Inscription : Octobre 2004
    Messages : 56
    Points : 66
    Points
    66
    Par défaut
    Citation Envoyé par Bernybon
    ouin mais si je ne veux que garder le YYYY-MM-DD que dois-je faire?

    je n'ai pas besoin des minutes pis des heures dans mon champ.. et je n'en veux pas.. celui-ci est du type smalldatetime

    merci
    Est ce
    CONVERT(DATETIME, CONVERT( VARCHAR , [Date à inserer ex : GETDATE()] , 103) , 103) ?


    Cordialement

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

Discussions similaires

  1. Probleme Date sur sql server 2008
    Par koukitou dans le forum Développement
    Réponses: 4
    Dernier message: 26/08/2014, 11h08
  2. PL/SQL dans APEX Probleme avec les Dates
    Par teen6517 dans le forum PL/SQL
    Réponses: 9
    Dernier message: 16/02/2011, 17h27
  3. probleme de date sur sql server 2000
    Par tezergane dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 29/12/2009, 17h48
  4. problème requète avec les dates sous sql server
    Par fayabones dans le forum Développement
    Réponses: 2
    Dernier message: 04/06/2009, 22h27
  5. [SQL Server 2000]Probleme avec les dates !
    Par ChristopheOce dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 26/10/2006, 15h58

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