2010-08-26 7 views
3

J'ai un @StartDate et @EndDate.SQL 1er du mois jusqu'à la fin du mois

J'ai besoin que @StartDate soit le jour où la requête est exécutée (ce qui sera toujours le premier du mois) et que le @EndDate soit exaclty à la fin du mois, peu importe si le mois est 30 ou 31 jours, etc.

+0

doit être un doublon .... –

+1

Pensez à ce sujet, la date de fin est toujours plus 1 mois - 1 jour – HLGEM

+0

@Mitch, j'ai fait une recherche rapide autour mais bizarrement ne pouvait rien trouver. Je suis aussi surpris que quiconque que cette question n'existait pas déjà, à moins que mes pouvoirs de recherche ne me manquent! ; =) – Rob

Répondre

6

A travaillé par exemple:

DECLARE @StartDate DATETIME, @EndDate DATETIME 

SET @StartDate = '2010-01-01 00:00:00.000' 
SET @EndDate = DATEADD(m, 1, @StartDate) 

SELECT @StartDate, @EndDate - 1 

Fondamentalement, vous voulez prendre la date de début, ajouter un mois (c'est ce que le DATEADD est en train de faire), puis déduire un jour.

La sortie de cette requête est:

StartOfMonth   EndOfMonth 
----------------------- ----------------------- 
2010-01-01 00:00:00.000 2010-01-31 00:00:00.000 
+0

Si vous vouliez utiliser la date du jour. SET @StartDate = DATEADD (MOIS, DATEDIFF (MOIS, 0, GETDATE()), 0) – etliens