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

MS SQL Server Discussion :

[Transact SQL] Trouver le premier jour du mois


Sujet :

MS SQL Server

  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    131
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2006
    Messages : 131
    Par défaut [Transact SQL] Trouver le premier jour du mois
    Bonjour,

    Je cherche un moyen d'obtenir le premier jour du mois en transact SQL.

    La date du premier jour du mois pour être plus précis

  2. #2
    Membre expérimenté
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2007
    Messages
    193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 193
    Par défaut
    je suppose que tu veux dire le jour? lundi/mardi/mercredi etc?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    declare @valday int
    SELECT @valday = DATEPART(dw, getdate())
     
    select case	when @valday = 1 then 'Dimanche'
    			when @valday = 2 then 'Lundi'
    			when @valday = 3 then 'Mardi'
    			when @valday = 4 then 'Mercredi'
    			when @valday = 5 then 'Jeudi'
    			when @valday = 6 then 'Vendredi'
    			when @valday = 7 then 'Samedi'
    		end
    par exemple, mais il faut faire attention a SET DATEFIRST voir l'article http://technet.microsoft.com/fr-fr/l.../ms174420.aspx

  3. #3
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    131
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2006
    Messages : 131
    Par défaut
    Merci pour la réponse mais ce n'est pas ce que je recherche.

    Je voudrai quelque chose du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DECLARE @Date_premier_jour_du_mois smalldatetime
    
    SET @Date_premier_jour_du_mois = Get_premier_jour_du_mois(GETDATE())
    Où la fonction "Get_premier_jour_du_mois" retournerai la date du 01/04/2008 pour ce mois-ci. Enfin je ne sais pas si une telle fonction existe mais je cherche un moyen propre d'obtenir cette date sans faire un CAST bancale qui ne serai pas compatible avec une date d'une autre culture.

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    CREATE FUNCTION F_DebutDeMois
    (
    	@pDate smalldatetime
    )
    RETURNS smalldatetime
    AS
    BEGIN
    	DECLARE @dDateDebutDeMois smalldatetime
     
    	SET @dDateDebutDeMois = CAST(CAST(YEAR(@pDate) as varchar) + RIGHT('0' + CAST(MONTH(@pDate) as varchar), 2) + '01' as smalldatetime)
     
    	RETURN @dDateDebutDeMois
     
    END
    La date retournée a une heure fixée à 00:00:00.
    Le transtypage vers le smalldatetime utilise le format universel YYYYMMJJ

  5. #5
    Membre Expert Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Par défaut
    Un truc du genre
    DateAdd(d, -Days(MaDate) + 1, MaDate), ça marche pas ?

  6. #6
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    131
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2006
    Messages : 131
    Par défaut
    Merci beaucoup les gens, ça marche!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE FUNCTION Date_premier_jour_du_mois(@Une_date smalldatetime) RETURNS smallDateTime
    AS
    BEGIN
       RETURN CAST(FLOOR(CAST(DateAdd(d, -Day(@Une_date) + 1, @Une_date) AS FLOAT)) AS smallDateTime)
    END
    
    SELECT dbo.Date_premier_jour_du_mois(GETDATE())

  7. #7
    Invité de passage
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1
    Par défaut Peut-être moins élégant mais efficace
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select Left(convert(varchar(8),GETDATE(),112),6)+'01'
    et on peut manipuler ça comme une date

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select dateadd(d,1,Left(convert(varchar(8),GETDATE(),112),6)+'01')

  8. #8
    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
    Par défaut
    Bonjour,

    Ou bien sans sortir du domaine de dates :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SELECT DATEADD(
    		MONTH,
    		DATEDIFF(
    			MONTH,
    			0,
    			GETDATE()
    		),
    		0
    	)
    avec cette méthode, on peut "arrondir" au mois, mais aussi à l'année, au jour, à l'heure, à la minute,...

  9. #9
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Je préfère de très loin la solution d'aieeeuuuuu.

    D'autre part j'ai publié ici quelques formules qui permettent de trouver ces fameuses dates

    Enfin, retenez que les fonctions scalaires, c'est mal

    @++

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

Discussions similaires

  1. Trouver le dernier jour du mois
    Par Zebulon777 dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 04/05/2011, 15h42
  2. Trouver le premier jour du mois
    Par Kaldyris dans le forum Requêtes
    Réponses: 2
    Dernier message: 08/10/2008, 15h15
  3. [Dates] date du premier jour du mois
    Par amel95140 dans le forum Langage
    Réponses: 3
    Dernier message: 11/04/2007, 14h48
  4. Trouver le premier jour et dernier jour de la semaine
    Par kurkaine dans le forum C++Builder
    Réponses: 2
    Dernier message: 22/11/2006, 19h09
  5. premier jour du mois
    Par ALLB dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 28/04/2006, 21h33

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