带有时区的where子句

时间:2011-05-08 19:17:32

标签: c# linq-to-sql

我正在为linq-to-sql查询编写where子句。假设列名是AppointTime,它存储在GMT时区中。我正在编写的查询是动态的,用户界面允许用户选择今天,昨天,2天前,3天,5天,10天,30天,60天,90天前的约会。

我的用户时区为十进制(即美国太平洋标准时间为-9.0)。

编写where子句的最佳方法是什么,以便想要查看他在2天前设置的约会的用户出现在查询的结果集中。

1 个答案:

答案 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}}时,未来的时间比过去的次数多。