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 :

Transformer un entier en format date


Sujet :

Développement SQL Server

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 25
    Points : 18
    Points
    18
    Par défaut Transformer un entier en format date
    Bonjour,

    Je souhaiterai avoir vos idées concernant la conversion d'un entier en une date.
    Je m'explique, j'ai des enregistrements dans ma table, avec un champ "période" au format int. Ce champ " période" reprend la date de facturation d'une charge.

    Ce champ est au format suivant : 201101 ==> Ce qui veut dire mois 01 de l'année 2011.

    Une fois que j'ai récupérer ces données, il serait plus intéressant pour moi de récupérer l'information au format date pour l'afficher sur un tableau de bord par la suite.

    Donc comment pourrais je passe de ce format "201101" à un format date ?
    (Je ferai les transformations nécessaires sur la date ensuite)

    Merci d'avance pour toutes vos suggestions !

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Citation Envoyé par Marsupilami23 Voir le message
    Des suggestions ?
    oui, plein !

    Code SQL : 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
    19
     
    DECLARE @dte INT = 201103
     
     
    SELECT CAST(CAST(@dte AS VARCHAR(8)) + '01' AS DATETIME)
     
    SELECT 
    	DATEADD(
    		YEAR,
    		@dte / 100 - 1,
    		CAST('0001-01-01' AS DATETIME2)
    	)
     
    SELECT 
    	DATEADD(
    		MONTH,
    		@dte - @dte / 100 * 100 - 1,
    		CAST(CAST(@dte / 100 AS CHAR(6)) AS DATETIME)
    	)

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 25
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par aieeeuuuuu Voir le message
    oui, plein !

    Code SQL : 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
    19
     
    DECLARE @dte INT = 201103
     
     
    SELECT CAST(CAST(@dte AS VARCHAR(8)) + '01' AS DATETIME)
     
    SELECT 
    	DATEADD(
    		YEAR,
    		@dte / 100 - 1,
    		CAST('0001-01-01' AS DATETIME2)
    	)
     
    SELECT 
    	DATEADD(
    		MONTH,
    		@dte - @dte / 100 * 100 - 1,
    		CAST(CAST(@dte / 100 AS CHAR(6)) AS DATETIME)
    	)


    C'est super aieeeuuuuu !
    Vous me sauvez la vie !

    J'ai testé les trois propositions : La 1ère et la 3ème marchent nickel, mais la 2ème j'ai une petite erreur " Le type DATETIME2 n'est pas un type défini par le système."

    Mais c'est bon , je garde l'une des deux !
    Vraiment merci !

  4. #4
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Citation Envoyé par Marsupilami23 Voir le message
    mais la 2ème j'ai une petite erreur " Le type DATETIME2 n'est pas un type défini par le système."
    Le type DATETIME2 n'existe que depuis la version 2008...

    Vous devez avoir une version antérieure

  5. #5
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 25
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par aieeeuuuuu Voir le message
    Le type DATETIME2 n'existe que depuis la version 2008...

    Vous devez avoir une version antérieure
    Oui oui j'ai omis de le mentionner: je suis sur sql server 2005, donc le type n'est pas reconnu !

    Mais l'une des deux autre solu est largement suffisante !

    Encore merci !

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

Discussions similaires

  1. Acces : transformer un entier en date
    Par BuzZ® dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 09/07/2008, 18h09
  2. transformer une donnée date en char(8) en format date
    Par zaza07 dans le forum SAS Base
    Réponses: 4
    Dernier message: 12/02/2008, 09h23
  3. [VBA-E] format date/mois en entier : résultat bizarre
    Par illight dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/07/2006, 15h05
  4. Transformation en format Date
    Par Jean-Matt dans le forum Langage SQL
    Réponses: 6
    Dernier message: 16/11/2004, 16h20

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