我正在为linq-to-sql查询编写where子句。假设列名是AppointTime,它存储在GMT时区中。我正在编写的查询是动态的,用户界面允许用户选择今天,昨天,2天前,3天,5天,10天,30天,60天,90天前的约会。
我的用户时区为十进制(即美国太平洋标准时间为-9.0)。
编写where子句的最佳方法是什么,以便想要查看他在2天前设置的约会的用户出现在查询的结果集中。
答案 0 :(得分:1)
这样的东西?
int days = 2; // set by UI?
var upcoming =
from appointment in dc.Appointments
where appointment.AppointTime.AddHours(userTZ) < DateTime.UtcNow.AddDays(days)
&& appointment.AppointTime > DateTime.UtcNow
orderby appointment.AppointTime ascending
select appointment;
我承认我并不完全清楚你想要获得什么信息......但是这应该包含足够的线索来编写你需要的查询。请记住两件事 - Addx()
DateTime
上的DateTimes
函数可以减去负值;在比较两个{{1}}时,未来的时间比过去的次数多。