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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 23
    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 éclairé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 52
    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
    Membre averti
    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
    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
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9
    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 éprouvé
    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
    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