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 :

Conversion de format de date


Sujet :

Développement SQL Server

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 23
    Points : 11
    Points
    11
    Par défaut Conversion de format de date
    Bonjour Je cherche à changer une date au format AAAAMMJJ mais je n'y arrive pas.

    Voici les informations :

    - Conversion utilisé actuellement
    CAST(CONVERT(VARCHAR(112), A.HORT_DATE) AS VARCHAR)

    Résultat :

    Mar 6 2012 12:00AM

    je voudrais avoir une date au format suivant :

    20120306

    merci d'avance pour votre aide.

    Cordialement

  2. #2
    Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 52
    Points : 69
    Points
    69
    Par défaut
    bonjour,

    est-ce que cela fonctionne ? :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    CONVERT(VARCHAR(8), A.HORT_DATE,112)

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 20
    Points : 37
    Points
    37
    Par défaut
    Bonjour,
    j'ai une solution un peu lourde, et pas garanti que ça marche, il faudrait connaître le format de base de la date de ta table.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SUBSTRING(convert(char(10), A.HORT_DATE, 103),7,4)+SUBSTRING(convert(char(10), A.HORT_DATE, 103),4,2)+SUBSTRING(convert(char(10), A.HORT_DATE, 103),1,2)
    Cela dit, la solution précédent a l'air de marcher tout aussi bien.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    Personnellement j'utilise pas mal les fonctions : Day, Month et Year
    Elles te retourne la valeur numérique.


    ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    declare @MaDate datetime,
               @MaDateFormate nvarchar(8)
     
    set @MaDate = getdate()
     
    set @MaDateFormate = cast(year(@MaDate) as nvarchar(4))+cast(Month(@MaDate)as nvarchar(2))+cast(Day(@MaDate) as nvarchar(2)
    juste un petit bémol, si ta date est 01/01/2012 ma méthode te donnes :
    201211
    Donc si tu veux vraiment avoir 2 chiffres pour les mois il faut passer par une fonction supplémentaire qui qui teste si tu as 1 chiffre dans quel cas elle te rajoute un 0.
    Voici un exemple :

    Fonction pour mettre sur 2 caractères :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    create FUNCTION [dbo].[FormatDate2](
    @PjourMois  int)
    RETURNS nvarchar(2)
    AS
    BEGIN
       	declare @date_f      nvarchar(2)
     
        -- Formatage du jour
        if ( len(@PjourMois)=1) 
            begin 
              set @date_f = '0'+CAST(@PjourMois as nvarchar(1)) 
            end
        else 
            begin
              set @date_f = CAST(@PjourMois as nvarchar(2)) 
            end
       RETURN @date_f
    END
    Ce qui nous donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     set @MaDateFormate = cast(YEAR(@MaDate) as nvarchar(4))+dbo.FormatDate2(MONTH(@MaDate))+dbo.FormatDate2(DAY(@MaDate))

  5. #5
    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
    juste un petit bémol, si ta date est 01/01/2012 ma méthode te donnes :
    201211
    Donc si tu veux vraiment avoir 2 chiffres pour les mois il faut passer par une fonction supplémentaire qui teste si tu as 1 chiffre dans quel cas elle te rajoute un 0.
    Ou alors le prendre en compte lors du cast en ajoutant un 0 devant le jour et le mois et d'utiliser la fonction RIGHT(maValeur, 2) :

    SET @MaDateFormate = cast(year(@MaDate) AS nvarchar(4))+ RIGHT('0' + cast(Month(@MaDate)AS nvarchar(2)), 2) + RIGHT('0' + cast(Day(@MaDate) AS nvarchar(2)), 2)
    Mais la solution de Christianbt est quand même plus simple.

Discussions similaires

  1. [Débutant] conversion de format de date
    Par Attila54 dans le forum VB.NET
    Réponses: 29
    Dernier message: 29/05/2012, 16h14
  2. [VS2005][MOBILE]Conversion entre format de date
    Par myspirou dans le forum VB.NET
    Réponses: 2
    Dernier message: 13/08/2008, 15h46
  3. Conversion de format de date
    Par msurf dans le forum Langage
    Réponses: 2
    Dernier message: 22/03/2007, 11h31
  4. Conversion de format de date
    Par decour dans le forum Access
    Réponses: 2
    Dernier message: 03/10/2005, 10h39
  5. Réponses: 11
    Dernier message: 02/09/2003, 14h20

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