Используйте тип List<BusinessObject>
, где необходимо объявить список их. Однако, где Вы возвращаете список BusinessObject
, рассматриваете возврат IEnumerable<T>
, IList<T>
или ReadOnlyCollection<T>
- т.е. возвращаете самый слабый контракт, который удовлетворяет клиент.
, Где Вы хотите к тому, "добавляют пользовательский код" к списку, методам расширения кода на типе списка. Снова, присоедините эти методы к самому слабому контракту, например,
public static int SomeCount(this IEnumerable<BusinessObject> someList)
, Конечно, Вы не можете и не должны добавлять состояние с дополнительными методами, поэтому если необходимо добавить новое свойство и поле позади него, используйте подкласс или лучше, класс обертки для хранения этого.
This will return all old campaigns:
SELECT *
FROM mytable
WHERE campaign_Date <= DATEADD(day, -90, GETDATE())
This will select 1
if campaign is old, 0
otherwise:
SELECT CASE WHEN campaign_Date <= DATEADD(day, -90, GETDATE()) THEN 1 ELSE 0 END
FROM mytable
Note that the first query condition is sargable: it will allow using an index to filter the dates.
This will update all old campaigns with status 6
:
UPDATE mytable
SET campaign_status = 6
WHERE campaign_Date <= DATEADD(day, -90, GETDATE())
See the DateAdd function
http://msdn.microsoft.com/en-us/library/ms186819.aspx
SELECT *
FROM MyTable
WHERE Campaign_Date <= DateAdd (d, -90, GetDate())
SELECT IIF(DATEDIFF(d, campaign_date, getdate()) >= 90, true, false)
AS IsNinetyOrMoreDaysOld
FROM myTable
EDIT: If you wish to pick records which are 90 or more days old,
SELECT campaign_date
FROM myTable
WHERE DATEDIFF(d, campaign_date, getdate()) >= 90
select campaign_Date,
case when getdate() - campaign_Date >= 90 then 'yes' else 'no' end as Is90DaysOldOrMore
from MyTable
ОБНОВЛЕНИЕ:
Вы можете обновить записи следующим образом:
update MyTable
set campaign_Status = 6
where getdate() - campaign_Date >= 90
Поскольку этот статус быстро устареет, потому что он зависит от даты, вы можете вместо этого сделать его вычисляемым столбцом .
Вот вариант предыдущих ответов, завернутый в хранимую процедуру (как, кажется, спросили):
CREATE PROC sp_Campaign_Archive AS
UPDATE [Campaign Table]
SET Campaign_Status = 6
WHERE DateDiff(day,Campaign_Date,GetDate()) >= 90
GO