2017-04-21 87 views
2
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 

當上面的查詢執行的結果集是在下面的格式日期時間相關的查詢

Mar 1 2017 12:00AM 
Mar 31 2017 11:59PM 

但我需要的結果集在下面的格式

2017-04-01 00:00:00.000 

任何幫助

+0

他們不*有*的格式,而他們是'datetime's。只有那些必須出於希望顯而易見的原因才能將它們轉換爲*字符串*的印刷品。只要你把它們保存爲'datetime's,它們沒有格式,並且你沒有格式化問題。 –

回答

0

t-sql的結果是你想要的,但是因爲你使用PRINT來查看結果它我在打印之前將結果轉換爲varchar。

如果你只是做一個選擇而不是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)) 


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 
0

您可以使用print語句將聲明的變量添加到CONVERT

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) 

輸出:

2017-03-01 00:00:00 
2017-03-31 23:59:59