Проверьте, ли DateTime в DB больше чем 90 дней с помощью Хранимой процедуры

Используйте тип List<BusinessObject>, где необходимо объявить список их. Однако, где Вы возвращаете список BusinessObject, рассматриваете возврат IEnumerable<T>, IList<T> или ReadOnlyCollection<T> - т.е. возвращаете самый слабый контракт, который удовлетворяет клиент.

, Где Вы хотите к тому, "добавляют пользовательский код" к списку, методам расширения кода на типе списка. Снова, присоедините эти методы к самому слабому контракту, например,

public static int SomeCount(this IEnumerable<BusinessObject> someList)

, Конечно, Вы не можете и не должны добавлять состояние с дополнительными методами, поэтому если необходимо добавить новое свойство и поле позади него, используйте подкласс или лучше, класс обертки для хранения этого.

7
задан Quassnoi 8 July 2010 в 19:59
поделиться

5 ответов

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())
11
ответ дан 6 December 2019 в 08:15
поделиться

See the DateAdd function

http://msdn.microsoft.com/en-us/library/ms186819.aspx

SELECT *
FROM MyTable
WHERE Campaign_Date <= DateAdd (d, -90, GetDate())
6
ответ дан 6 December 2019 в 08:15
поделиться
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
1
ответ дан 6 December 2019 в 08:15
поделиться
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

Поскольку этот статус быстро устареет, потому что он зависит от даты, вы можете вместо этого сделать его вычисляемым столбцом .

1
ответ дан 6 December 2019 в 08:15
поделиться

Вот вариант предыдущих ответов, завернутый в хранимую процедуру (как, кажется, спросили):

CREATE PROC sp_Campaign_Archive AS

    UPDATE [Campaign Table]
    SET Campaign_Status = 6
    WHERE DateDiff(day,Campaign_Date,GetDate()) >= 90

GO
3
ответ дан 6 December 2019 в 08:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: