Вопрос по конвертации целых в datetime в TSQL - PullRequest
1 голос
/ 25 января 2010

У меня есть хранимая процедура, которая принимает 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 ]

5 голосов
/ 25 января 2010
SELECT CAST(CAST(@Year AS VARCHAR(4))  + RIGHT('0' + CAST(@Month AS VARCHAR(2)), 2) + '01' AS DATETIME)

Должен сделать это

0 голосов
/ 15 июня 2011

Фильтрация дат с использованием функций YEAR и MONTH.

SELECT *
FROM Sales
WHERE YEAR(Sales.PurchaseDate) = @year
AND MONTH(Sales.PurchaseDate) = @month
0 голосов
/ 15 июня 2011

Использование DATEADD.

DATEADD(month, @month - 1, DATEADD(year, @year - 1900, 0))
0 голосов
/ 26 января 2010

А как же:

DECLARE @year int;
DECLARE @Month int;

SET @year = 2010;
SET @Month = 1

SELECT CAST(LTRIM(@year * 10000 + @Month * 100 + 1) AS smalldatetime)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...