Fonction sql srver

bmeri Messages postés 2 Date d'inscription dimanche 8 octobre 2006 Statut Membre Dernière intervention 26 octobre 2007 - 24 oct. 2007 à 18:07
FENETRES Messages postés 196 Date d'inscription jeudi 15 juillet 2004 Statut Membre Dernière intervention 14 avril 2009 - 2 nov. 2007 à 17:20
bjr
j'ai besoin de votre aide pour trouver une fonction qui permet de renvoyer le trimestre pour pouvoir effectuer  un filtre avec ,
merci d'avance

5 réponses

calla25 Messages postés 85 Date d'inscription lundi 26 janvier 2004 Statut Membre Dernière intervention 25 octobre 2007
25 oct. 2007 à 15:13
Bonjour,

Si j'ai bien compris tu essayes de récupérer le trimestre d'une date dans une table?
Essayes cela :
select quarter(TaDate) From TaTable;
Je pense que ce doit etre un truc de ce genre.

Regarde le lien(chapitre VIII):
ftp://ftp-developpez.com/baptiste-wicht/tutoriel/ms-sql/datetime/datetime.pdf
Bon courage
0
mrdep1978 Messages postés 402 Date d'inscription jeudi 25 novembre 2004 Statut Membre Dernière intervention 7 juin 2009 7
26 oct. 2007 à 16:49
Salut,

A ma connaissance, il n'y a pas de fonction toute faite.

Je te propose ceci :

select

ceiling(cast(datepart(month,maDate)asfloat)/3)from maTable

* datepart(month, madate) renvoie le numéro du mois de ta date (de 1 à 12)
* cast(... as float) va convertir ce mois en décimal. Si tu ne le fais pas il va tronquer le résultat de ta division par 3 : ex. pour novembre : 11/3 => 3 au lieu de 3.6666666..
* /3 car 1 trimestre = 3 mois
* ceiling pour arrondir à l'entier supérieur le plus proche ;- Aout : 8/3 2.66666..< Ceiling(8/3) = 3- Octobre : 10/3 3.3333333... > Ceiling(10/3) = 4- Décembre : 12/3 4> Ceiling(12/3) = 4
etc...

Olivier
0
mrdep1978 Messages postés 402 Date d'inscription jeudi 25 novembre 2004 Statut Membre Dernière intervention 7 juin 2009 7
26 oct. 2007 à 16:52
Argh, j'ai oublié un saut de ligne, ça fait tout moche.
Je reprends :

select
ceiling
(
cast
(
datepart
(
month
,
maDate
)


as


float
)/
3
)


from


maTable









* datepart(month, madate) renvoie le numéro du mois de ta date (de 1 à 12)
* cast(... as float) va convertir ce mois en décimal. Si tu ne le fais pas il va tronquer le résultat de ta division par 3 : ex. pour novembre : 11/3 => 3 au lieu de 3.6666666..
* /3 car 1 trimestre = 3 mois
* ceiling pour arrondir à l'entier supérieur le plus proche ;- Aout : 8/3 2.66666..< Ceiling(8/3) = 3- Octobre : 10/3 3.3333333... > Ceiling(10/3) = 4- Décembre : 12/3 4> Ceiling(12/3) = 4
etc...
0
bmeri Messages postés 2 Date d'inscription dimanche 8 octobre 2006 Statut Membre Dernière intervention 26 octobre 2007
26 oct. 2007 à 18:10
bjr
merci a vous j'ai deja trouvé une solution c'est d'ajouter une table qui contient les mois et le trimestre associé a chaque mois et en fonction de cet table je peux avoir le trimestre on l'associant avec la table qui contient la date dont je veux connaitre le trimestre.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
FENETRES Messages postés 196 Date d'inscription jeudi 15 juillet 2004 Statut Membre Dernière intervention 14 avril 2009
2 nov. 2007 à 17:20
--Cependant très simple !<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /??>






 






declare

@dte
as


datetime






set

@dte
=
convert
(
datetime
,


'01/04/2007'
)







 






select



datepart
(
quarter
,
@dte
)






--sinon





select



ceiling
(
month
(
@dte
)/
3.0
)






Fenêtres
0
Rejoignez-nous