我有一个存储过程,它将所需月份和年份的int作为参数。它使用这些来比较我从中拉出的表中的一些日期时间值。我需要将它们转换为DateTime值。我正在尝试做这样的事情:
CONVERT(DATETIME, CONVERT(varchar(4), @year) + '-' + Convert(varchar(2),@month) + '-01 00:00:00', 102))
构建“2009-6-1 00:00:00”字符串(对于那些参数值)。这似乎不起作用,任何其他建议如何做到这一点?我觉得我这样做太像程序员......
这是Sql Server 2008。
答案 0 :(得分:5)
SELECT CAST(CAST(@Year AS VARCHAR(4)) + RIGHT('0' + CAST(@Month AS VARCHAR(2)), 2) + '01' AS DATETIME)
应该这样做
答案 1 :(得分:0)
怎么样:
DECLARE @year int;
DECLARE @Month int;
SET @year = 2010;
SET @Month = 1
SELECT CAST(LTRIM(@year * 10000 + @Month * 100 + 1) AS smalldatetime)
答案 2 :(得分:0)
使用DATEADD
。
DATEADD(month, @month - 1, DATEADD(year, @year - 1900, 0))
答案 3 :(得分:0)
使用YEAR
和MONTH
函数过滤日期。
SELECT *
FROM Sales
WHERE YEAR(Sales.PurchaseDate) = @year
AND MONTH(Sales.PurchaseDate) = @month