Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Développement
Développement Forum d'entraide sur le Transact-SQL, le CLR, les procédures stockées, les triggers, les requêtes SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/06/2011, 14h24   #1
Invité régulier
 
Inscription : mars 2009
Messages : 25
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 25
Points : 7
Points : 7
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 !
Marsupilami23 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/06/2011, 15h14   #2
Membre Expert
 
Inscription : janvier 2010
Messages : 1 084
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2010
Messages : 1 084
Points : 1 573
Points : 1 573
Citation:
Envoyé par Marsupilami23 Voir le message
Des suggestions ?
oui, plein !

Code SQL :
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)
	)
aieeeuuuuu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/06/2011, 15h21   #3
Invité régulier
 
Inscription : mars 2009
Messages : 25
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 25
Points : 7
Points : 7
Citation:
Envoyé par aieeeuuuuu Voir le message
oui, plein !

Code SQL :
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 !
Marsupilami23 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/06/2011, 15h25   #4
Membre Expert
 
Inscription : janvier 2010
Messages : 1 084
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2010
Messages : 1 084
Points : 1 573
Points : 1 573
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
aieeeuuuuu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/06/2011, 15h27   #5
Invité régulier
 
Inscription : mars 2009
Messages : 25
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 25
Points : 7
Points : 7
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 !
Marsupilami23 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h10.


 
 
 
 
Partenaires

Hébergement Web