我正在使用Entity Framework在C#中开发MVC3应用程序。我有一个增值税率表,其中包含增值税率,开始日期,结束日期字段。
开始日期和结束日期可以为空,表示这是历史汇率或持续汇率。我想弄清楚的是,当我传递一个日期时,如何创建一个将这些空值考虑在内的单个查询给我增值税率。
(例子显示英国日期格式dd / mm / yyyy
+--------------+-------------+----------+ | Start Date | End Date | Vat rate | +--------------+-------------+----------+ | Null | 01/01/2011 | 19 | +--------------+-------------+----------+ | 02/01/2011 | 08/08/2011 | 20 | +--------------+-------------+----------+ | 09/08/2011 | Null | 21 | +--------------+-------------+----------+
感谢您的时间
答案 0 :(得分:0)
假设您传入@Date
SELECT VATRate
FROM VATRateTable
WHERE @Date
BETWEEN ISNULL(StartDate, '1900-01-01') AND ISNULL(EndDate, '2100-01-01')
答案 1 :(得分:0)
如果您使用EF,可以执行以下操作:
DateTime first = DateTime.Parse("01-01-1900");
DateTime last = DateTime.Parse("01-01-2100");
var rate = db.VatRates.Where(
vr => input > (vr.StartDate ?? first) && input < (vr.EndDate ?? last)).First().Rate;
根据下面的评论,如果没有EndDate列,请尝试:
DateTime start = DateTime.Parse("01-01-1900");
var rate = db.VatRates.Where(vr => input > (vr.StartDate ?? start))
.OrderByDescending(vr => vr.StartDate).First().Rate;
适合我:)