2010-01-25 118 views
1

我有一個存儲過程,它將所需月份和年份的int作爲參數。它使用這些來比較我所從表中的一些日期時間值。我需要將它們轉換爲DateTime值。我試圖做這樣的事情:關於在TSQL中將日期時間轉換爲日期時間的問題

CONVERT(DATETIME, CONVERT(varchar(4), @year) + '-' + Convert(varchar(2),@month) + '-01 00:00:00', 102)) 

其中構建「2009-6-1 00:00:00」字符串(對於這些參數值)。這似乎並沒有工作,但有關如何做到這一點的任何其他建議?我想我會對此太像一個程序員...

它與SQL Server 2008的

回答

5
SELECT CAST(CAST(@Year AS VARCHAR(4)) + RIGHT('0' + CAST(@Month AS VARCHAR(2)), 2) + '01' AS DATETIME) 

應該這樣做

0

什麼:

DECLARE @year int; 
DECLARE @Month int; 

SET @year = 2010; 
SET @Month = 1 

SELECT CAST(LTRIM(@year * 10000 + @Month * 100 + 1) AS smalldatetime) 
0

使用DATEADD

DATEADD(month, @month - 1, DATEADD(year, @year - 1900, 0)) 
0

使用YEARMONTH函數過濾日期。

SELECT * 
FROM Sales 
WHERE YEAR(Sales.PurchaseDate) = @year 
AND MONTH(Sales.PurchaseDate) = @month