关于在SQL中将int转换为日期时间的问题

时间:2010-01-25 20:22:11

标签: sql-server sql-server-2008 datetime

我有一个存储过程,它将所需月份和年份的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。

4 个答案:

答案 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)

使用YEARMONTH函数过滤日期。

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