DECLARE @PreviousMonthStart DATETIME DECLARE @PreviousMonthEnd DATETIME SET @PreviousMonthStart = DATEADD(m,DATEDIFF(m,0,GETDATE())-1,0) SET @PreviousMonthEnd = DATEADD(ms,-2,DATEADD(month, DATEDIFF(month, 0, GETDATE()), 0)) PRINT @PreviousMonthStart PRINT @PreviousMonthEnd
lorsqu'il est exécuté ci-dessus requête le jeu de résultats est dans le format ci-dessous
Mar 1 2017 12:00AM Mar 31 2017 11:59PM
Mais j'ai besoin de résultats dans le format ci-dessous
2017-04-01 00:00:00.000
de l'aide
Le résultat de la t-sql est ce que vous voulez, mais parce que vous utilisez PRINT
pour voir les résultats, il convertit le résultat en varchar avant de l'imprimer.
Si vous faites simplement une sélection à la place de l'printing, elle vous montrera ce que vous voulez voir.
DECLARE @PreviousMonthStart DATETIME DECLARE @PreviousMonthEnd DATETIME SET @PreviousMonthStart = DATEADD(m,DATEDIFF(m,0,GETDATE())-1,0) SET @PreviousMonthEnd = DATEADD(ms,-2,DATEADD(month, DATEDIFF(month, 0, GETDATE()), 0)) SELECT @PreviousMonthStart -- Result: 2017-03-01 00:00:00.000 SELECT @PreviousMonthEnd -- Result: 2017-03-31 23:59:59.997 PRINT @PreviousMonthStart -- Result: Mar 1 2017 12:00AM PRINT @PreviousMonthEnd -- Result: Mar 31 2017 11:59PM
Vous pouvez append CONVERT
avec la variable déclarée avec l'instruction print.
DECLARE @PreviousMonthStart DATETIME DECLARE @PreviousMonthEnd DATETIME SET @PreviousMonthStart = DATEADD(m,DATEDIFF(m,0,GETDATE())-1,0) SET @PreviousMonthEnd = DATEADD(ms,-2,DATEADD(month, DATEDIFF(month, 0, GETDATE()), 0)) PRINT CONVERT(VARCHAR(25),@PreviousMonthStart,120) PRINT CONVERT(VARCHAR(25),@PreviousMonthEnd,120)
Sortie:
2017-03-01 00:00:00 2017-03-31 23:59:59