У меня есть таблица PersonalInformation
в SQL Server 2008. В этой таблице есть столбец CreateDate
который хранит дату для вставленной записи. Теперь я хочу искать запись из таблицы в соответствии с датой. Моя строка поиска похожа на Month-Year
а CreateDate
хранится с использованием функции GETDATE()
SQL Server.
Если я использую формат Month-Year
, например, March-2012
я хочу, чтобы месяц и год были сопоставлены с табличной записью, а также отображалась запись, введенная до March-2012
.
Как я мог это достичь?
Заранее спасибо.
использовать функцию DATEPART
select DATEPART(MM,'March 2012') --> 3
select DATEPART(YYYY,'March 2012')--> 2012
поэтому в вашем запросе поиск
select * from table where DATEPART("MM" CreatedDate) = DATEPART(MM,'March 2012') AND DATEPART("YYY" CreatedDate) = DATEPART(YYY,'March 2012')
таким образом вы можете проверить = или> =, как хотите.
Обратите внимание, что мой ввод - March 2012
а не March-2012
. Для замены строки используйте функцию Заменить в своем пути
REPLACE('March-2012','-',' ')
для поиска до даты ввода
select * from table where (DATEPART("MM" CreatedDate) <= DATEPART(MM,'March 2012') AND DATEPART("YYY" CreatedDate) = DATEPART(YYY,'March 2012') OR (DATEPART("YYY" CreatedDate) < DATEPART(YYY,'March 2012')))
для поиска по дате ввода
select * from table where (DATEPART("MM" CreatedDate) > DATEPART(MM,'March 2012') AND DATEPART("YYY" CreatedDate) = DATEPART(YYY,'March 2012') OR (DATEPART("YYY" CreatedDate) > DATEPART(YYY,'March 2012')))
Попробуйте вот так:
SELECT * FROM TableName
WHERE
CONVERT(varchar(10), DATENAME(MONTH, CreatedDate)) = 'March' // Passed From Parameter
AND Year(CreatedDate) = 2014 // Passed From Parameter
Вам не нужно возиться со строковым представлением данных и использовать эту строку для сравнения.
Я бы предложил сначала DateTime
дату ввода на правильный объект DateTime
:
var dt = DateTime.ParseExact("March-2012", "MMMM-yyyy", CultureInfo.InvariantCulture);
Затем используйте этот объект DateTime как SqlParameter
с SqlDbType.DateTime
в вашей SqlCommand
для фильтрации на CreatedDate
столбца CreatedDate
.
Выберите * из Tbl_Name, где Convert (varchar, createDate, 110), например '12 -10 '