使用linq从日期中减去天数
Subtracting days from a date using linq
我有一个函数,它需要几天 (var daysPrior) 和一个日期 (var inDate)。日期是我们正在查看的当前日期(对于实时系统,它将是今天的日期)。
需要从我们数据库中的日期字段中减去天数(var SomeDate,type:timestamp with time zone)。
我正在尝试在此函数中编写一个 linq 查询,以从我们的 postgres 数据库中的日期字段中减去天数。我已经尝试了一些事情并做了很多搜索但没有运气。
尝试 1
我从这个查询开始。
var negatedDaysPrior = System.Math.Abs(daysPrior) * (-1);
var query = dataContext.Table.Where(x => x.SomeDate.Value.AddDays(negatedDaysPrior) <= inDate);
这将转换为以下 SQL(取自异常的 ErrorSQL 字段)并给出以下错误:
SELECT
x.SomeFields
FROM
schema.table x
WHERE
x.some_date + Interval '((E'-5')) Day' <= ((E'2015-01-16 09:45:26.513059'))
错误:{"ERROR: 42601: syntax error at or near \"')) 日'\""}
尝试 2
var negatedDaysPrior = System.Math.Abs(daysPrior) * (-1);
TimeSpan timespanDays = new TimeSpan(daysPrior, 0, 0, 0);
var query = dataContext.Table.Where(x => x.SomeDate.Value.Subtract(timespanDays) <= inDate);
当我 运行 这个时,我得到一个 BLToolkit.Data.Linq.LinqException:
'ConvertNullable(x.SomeDate).Subtract(value(ReferenceToMyFile+<>c__DisplayClass15+<>c__DisplayClass17).timespanDays)' cannot be converted to SQL.
有谁知道是否可以使用 linq 从数据库中的日期中减去天数?
我们使用的工具是:postgres 数据库,用于 linq 到 sql 转换的 BLToolkit。
inDate = inDate.AddDays(-daysPrior)
var query = dataContext.Where(x => x.SomeDate >= inDate)
我有一个函数,它需要几天 (var daysPrior) 和一个日期 (var inDate)。日期是我们正在查看的当前日期(对于实时系统,它将是今天的日期)。 需要从我们数据库中的日期字段中减去天数(var SomeDate,type:timestamp with time zone)。
我正在尝试在此函数中编写一个 linq 查询,以从我们的 postgres 数据库中的日期字段中减去天数。我已经尝试了一些事情并做了很多搜索但没有运气。
尝试 1
我从这个查询开始。
var negatedDaysPrior = System.Math.Abs(daysPrior) * (-1);
var query = dataContext.Table.Where(x => x.SomeDate.Value.AddDays(negatedDaysPrior) <= inDate);
这将转换为以下 SQL(取自异常的 ErrorSQL 字段)并给出以下错误:
SELECT
x.SomeFields
FROM
schema.table x
WHERE
x.some_date + Interval '((E'-5')) Day' <= ((E'2015-01-16 09:45:26.513059'))
错误:{"ERROR: 42601: syntax error at or near \"')) 日'\""}
尝试 2
var negatedDaysPrior = System.Math.Abs(daysPrior) * (-1);
TimeSpan timespanDays = new TimeSpan(daysPrior, 0, 0, 0);
var query = dataContext.Table.Where(x => x.SomeDate.Value.Subtract(timespanDays) <= inDate);
当我 运行 这个时,我得到一个 BLToolkit.Data.Linq.LinqException:
'ConvertNullable(x.SomeDate).Subtract(value(ReferenceToMyFile+<>c__DisplayClass15+<>c__DisplayClass17).timespanDays)' cannot be converted to SQL.
有谁知道是否可以使用 linq 从数据库中的日期中减去天数?
我们使用的工具是:postgres 数据库,用于 linq 到 sql 转换的 BLToolkit。
inDate = inDate.AddDays(-daysPrior)
var query = dataContext.Where(x => x.SomeDate >= inDate)