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 :

Conversion spécifique de date


Sujet :

MS SQL Server

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 30
    Points : 25
    Points
    25
    Par défaut Conversion spécifique de date
    Bonjour à tous,

    J'ai besoin de convertir un format date du type

    12/09/2012 14:04:29 en 12.09.2012. (je travaille avec Access sous SQL Server)

    J'ai essayé avec cast, mais le problème c'est qu'il convertit par exemple 09 en 9... et si je rajoute un 0 ça posera problème pour les 2 autres tiers des jours du mois bien sûr...

    Avez vous une solution?

    Merci!

  2. #2
    Membre éprouvé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2009
    Messages
    623
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Août 2009
    Messages : 623
    Points : 1 049
    Points
    1 049
    Par défaut
    Bonjour, tu peux essayer avec ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT CONVERT(char(10), '12/09/2012 14:04:29', 103)
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT CAST('12/09/2012 14:04:29' as DATE)
    Blog Perso | Kankuru (logiciel gratuit pour SQL Server)

  3. #3
    Membre habitué
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2011
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 118
    Points : 180
    Points
    180
    Par défaut
    Bonjour,

    En T-SQL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CONVERT(char(10), madate, 104)

  4. #4
    Membre actif
    Inscrit en
    Janvier 2012
    Messages
    145
    Détails du profil
    Informations forums :
    Inscription : Janvier 2012
    Messages : 145
    Points : 226
    Points
    226
    Par défaut
    La MSDN devrait répondre à toutes tes questions sur les formats dates (cf Date and Time Styles).

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 30
    Points : 25
    Points
    25
    Par défaut
    Parfait, j'ai essayé avec la 104, mais merci à tous pour vos réponses!

    Merci vraiment...

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 30
    Points : 25
    Points
    25
    Par défaut
    Par contre, je dois ensuite comparer des dates de ce type JJ.MM.AAAA.

    Le problème, c'est qu'il ne compare apparement que JJ, et donc le 23 aout se trouve apreès le 15 Septembre....

    Est ce parce qu'il ne comprend pas qu'il s'agit d'uneformat datetime?

    J'ai donc essayé de reconvertir en JJ/MM/AAAA avec convert(103), mais ça ne fonctionne pas.

    Si vous pouviez m'aider une dernière fois!

    Merci beaucoup

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    240
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 240
    Points : 210
    Points
    210
    Par défaut
    Une colonne de type datetime doit être comparée avec une autre colonne de type datetime. Le reste, c'est de l'affichage.

    Pour l'enlèvement des heures et minutes, tu peux faire ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DECLARE @MaDate AS datetime
    SET @MaDate = GETDATE() -- par exemple
    SELECT CAST(FLOOR(CAST(@MaDate AS FLOAT)) AS DATETIME)

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 30
    Points : 25
    Points
    25
    Par défaut
    En fait pour l'enlèvement heures minutes ça fonctionne avec le convert 104, mais le problème c'est que même s'il sagit du même type de données il ne reconnaît pas de datetime...

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    240
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 240
    Points : 210
    Points
    210
    Par défaut
    C'est normal, car le résultat de l'instruction CONVERT avec le style 104 donne du varchar.

    Il y a deux choses à considérer avec les dates :

    - Le stockage
    - L'affichage.

    Pour ce qui est du stockage dans une table ou une variable , il faut utiliser le type datetime (il y a d'autres types qui ont été introduit en 2008 mais restons avec datetime pour simplifier l'explication).

    L'affichage est tout autre chose : on veut afficher avec des points, des tirets, en AAAAMMJJ ou JJMMAAAA,...

    Il ne faut sutrout pas confondre affichage et stockage. Lorsque tu fait un CONVERT, le résultat n'est plus du datetime, mais du varchar, et dès lors il n'est plus possible de faire des comparaisons comme si le résultat était en datetime. C'est pourquoi en varchar 12092012 est supérieur à 01102012.

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 30
    Points : 25
    Points
    25
    Par défaut
    C'est très clair, mais alors, comment est-ce que je le passe à nouveau en datetime?!

  11. #11
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    240
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 240
    Points : 210
    Points
    210
    Par défaut
    Cet exemple montre que tu peux rester en datetime en enlevant les heures et minutes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DECLARE @MaDate AS datetime
    SET @MaDate = GETDATE() -- par exemple
    SELECT CAST(FLOOR(CAST(@MaDate AS FLOAT)) AS DATETIME)
    Mais peux-tu me dire quel genre de comparaison tu souhaites effectuer ?

  12. #12
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 30
    Points : 25
    Points
    25
    Par défaut
    ça fonctionne merci! c'était simplement > ou <...

  13. #13
    Membre habitué
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2011
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 118
    Points : 180
    Points
    180
    Par défaut
    Pour faire des recherches sur les dates, il vaut mieux utiliser le format ISO (AAAAMMJJ)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CONVERT(CHAR(10), @Date, 112)

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

Discussions similaires

  1. [D7][InterBase] conversion automatique de date
    Par Magnus dans le forum Bases de données
    Réponses: 4
    Dernier message: 09/05/2005, 14h58
  2. Réponses: 8
    Dernier message: 05/02/2005, 16h38
  3. [date] conversion d'une date et compatibilité access
    Par WriteLN dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 10/01/2005, 14h03
  4. [CR] pb (concaténation/Conversion/Addition) sur date/heure
    Par marvel dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 20/12/2004, 15h31
  5. conversion String en Date (parse trop permissif)
    Par ciloulou dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 13/09/2004, 18h36

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