Requête liée à datetime dans le server SQL

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