Дозвуковой Как выбрать между датой - PullRequest
1 голос
/ 15 июня 2009

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

Стол Заказчика Имя Томас DOB 19/09/2001

Спасибо

Ответы [ 4 ]

5 голосов
/ 15 июня 2009

Если вы используете только одного провайдера (большинство пользователей) и хотите воспользоваться преимуществами таблиц, которые 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 голосов
/ 17 июня 2009

В 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")
0 голосов
/ 16 июня 2009

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

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

Пожалуйста, попробуйте это:

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

PS: - Провайдер - это имя вашего SubSonic провайдера.

...