日数 (var daysPrior) と日付 (var inDate) を受け取る関数があります。日付は現在の日付です (ライブ システムの場合は、今日の日付になります)。データベースの日付フィールドから日数を差し引く必要があります (var SomeDate, type:timestamp with time zone)。
この関数で、postgres データベースの日付フィールドから日数を減算する linq クエリを作成しようとしています。私はいくつかのことを試してみましたが、運が悪くて多くの検索を行いました.
試行 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'))
エラー: {"エラー: 42601: \"')) 日'\""} で構文エラーが発生しました
試行 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 です。