Добрый день. есть вот такой пример запроса.
идея в том чтоб взять записи которые созданы после определенного времени.
в результате он генерирует следующий SQL запрос который не совсем подходит, так как он возвращает запись которая была возвращена в прошлой выборке (я вытаскиваю данные по 10 записей).
пример запроса, который создается
SELECT
"Contact"."Name" "Name",
"Contact"."QSoftGSTime" "QSoftGSTime",
"Contact"."ContactPhoto" "ContactPhoto",
"Contact"."Phone" "Phone",
"Contact"."CreatedOn" "CreatedOn",
COALESCE("SysCityLcz"."Name", "City"."Name") "City.Name"
FROM
"public"."Contact" "Contact"
LEFT OUTER JOIN "public"."City" "City" ON ("City"."Id" = "Contact"."CityId")
LEFT OUTER JOIN "public"."SysCityLcz" "SysCityLcz" ON ("SysCityLcz"."RecordId" = "City"."Id"
AND "SysCityLcz"."SysCultureId" = '{F0EA9715-8757-474C-AEE9-743D672E48C9}')
WHERE
"Contact"."CreatedOn" > TO_TIMESTAMP('2023-02-06 21:21:02.149', 'YYYY-MM-DD HH24:MI:SS.FF3')
ORDER BY
"CreatedOn" ASC NULLS FIRST
LIMIT 10
получается что при выборке данных проверяется только первые три цифры из милисекунд ('2023-02-06 21:21:02.149', 'YYYY-MM-DD HH24:MI:SS.FF3'). в итоге я получаю два раза одну и ту же запись. решение это указывать все 6 цифр милисекунд следующий запрос выполняется корректно и не приводит к дублированию данных
SELECT
"Contact"."Name" "Name",
"Contact"."QSoftGSTime" "QSoftGSTime",
"Contact"."ContactPhoto" "ContactPhoto",
"Contact"."Phone" "Phone",
"Contact"."CreatedOn" "CreatedOn",
COALESCE("SysCityLcz"."Name", "City"."Name") "City.Name"
FROM
"public"."Contact" "Contact"
LEFT OUTER JOIN "public"."City" "City" ON ("City"."Id" = "Contact"."CityId")
LEFT OUTER JOIN "public"."SysCityLcz" "SysCityLcz" ON ("SysCityLcz"."RecordId" = "City"."Id"
AND "SysCityLcz"."SysCultureId" = '{F0EA9715-8757-474C-AEE9-743D672E48C9}')
WHERE
"Contact"."CreatedOn" > TO_TIMESTAMP('2023-02-06 21:21:02.149528', 'YYYY-MM-DD HH24:MI:SS.FF6')
ORDER BY
"CreatedOn" ASC NULLS FIRST
LIMIT 10
я не нашел способа управлять количеством цифр милисекунд в запросе.
можете подсказать как это правильно сделать?
пока что как хак я решил генерировать запрос с помощью EntitySchemaQuery, делать esqResult.GetSelectQuery(_connection), с него получать текст запроса и в нем уже подменять значения с помощью регулярки. но это выглядит костылем, который не хотелось бы оставлять.
спасибо!