2009-06-15 2 views
1

Может ли кто-нибудь сказать мне, как сделать функцию select в проекте SubSonic, чтобы запросить всех клиентов, у которых будет день рождения в ближайшие две недели с сегодняшнего дня.Subsonic Как выбрать между датой

Таблица Customer Имя Thomas DOB 19/09/1981

Спасибо

ответ

0

Пожалуйста, попробуйте следующее:

new Select("Provider").From("Customers") 
.Where("CustomerName") 
.IsEqualTo("Thomas") 
.Where("DOB") 
.IsBetweenAnd(DateTime.Today, DateTime.Today.AddDays(14)); 

PS: - Provider Ваш SubSonic имя поставщика.

5

Если вы используете только один поставщик (большинство людей), и вы хотите, чтобы воспользоваться преимуществами таблицы структур, которые SubSonic генерирует для вас:

CustomerCollection customers = DB.Select().From(Customers.Schema) 
    .Where(Customers.Columns.CustomerName).IsEqualTo("Thomas") 
    .And(Customers.Columns.DOB).IsBetweenAnd(DateTime.Today, DateTime.Today.AddDays(14)) 
    .ExecuteAsCollection<CustomerCollection>(); 
0

Я думаю, что нужно объяснять больше на то, что я хотел бы иметь, я хотел бы отправить электронное письмо всем клиенту, который будет находиться в ближайшие 2 недели в 3 раза, за 2 недели до его/ее дня рождения, за 3 дня до и за 1 день до этого.

+0

* Вы должны * иметь возможность редактировать свой вопрос, чтобы добавить эту информацию к нему. –

0

В SQL Server, это будет что-то вроде

select name, dob 
from customer 
where datediff(day,getDate(),dob)+1 = 14 
or datediff(day,getDate(),dob)+1 = 3 
or datediff(day,getDate(),dob)+1 = 1 

В SubSonic, вы могли бы написать это так:

new Select(Customer.NameColumn, Customer.DobColumn) 
.From(Customer.Schema) 
.Where("datediff(day,getDate(),dob)+1=14") 
    .Or("datediff(day,getDate(),dob)+1=3") 
    .Or("datediff(day,getDate(),dob)+1=1") 
Смежные вопросы