.NET Maui: обнаружение перекрывающихся дат с помощью SQLite [дубликат]C#

Место общения программистов C#
Ответить
Anonymous
 .NET Maui: обнаружение перекрывающихся дат с помощью SQLite [дубликат]

Сообщение Anonymous »

У меня возникла очень сложная проблема. Я пытаюсь создать функцию, которая при задании даты/времени начала и даты/времени окончания определяет, перекрывается ли какая-либо из них с другой датой/временем в базе данных SQLite, и возвращает true или false в зависимости от результата. После много возни, это было лучшее, что мне удалось придумать:

Код: Выделить всё

        public static async Task DetermineOverlap(DateTime start, DateTime end)
{
await Init();

// Convert DateTime to string in the format that SQLite understands
string startFormatted = start.ToString("yyyy-MM-dd HH:mm:ss");
string endFormatted = end.ToString("yyyy-MM-dd HH:mm:ss");

// Raw SQL query to check if the time ranges overlap
string query = @"
SELECT COUNT(*)
FROM Appointment
WHERE
(StartDateTime < @end AND EndDateTime > @start) OR
(@start < EndDateTime AND @end > StartDateTime);";

var count = await _db.ExecuteScalarAsync(query, new object[] { startFormatted, endFormatted });

// Check if any record exists in the result, indicating an overlap
return count > 0;
}
Теперь у меня есть отдельная функция, которая в качестве теста получает существующие записи StartDateTime и EndDateTime из базы данных. Я точно знаю, что это 2025-01-23 01:00:00 и 2025-01-23 01:15:00 соответственно. Теперь параметры, которые я передаю в DefinityOverlap, — это DateTime, состоящий из 23 января 2025 года 1:00:00 и 23 января 2025 года 1:45:00 (поэтому я конвертирую строковый формат)... последний из них явно перекрывается с 1:15 ночи. Проблема в том, что, несмотря ни на что, функция всегда возвращает False. Я экспериментировал с множеством разных способов сделать это, но безрезультатно. Я упускаю что-то очень очевидное? Спасибо.

Подробнее здесь: https://stackoverflow.com/questions/793 ... ing-sqlite
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»