Я пытаюсь получить дату из своей базы данных и пробовал разные вещи, но, похоже, ничего не работает.
Это моя дата в базе данных 2024-04-18 19:47:36.337
, в Microsoft SQL Server она определена как datetime
; Я использую Entity Framework и C#, и переменная
public DateTime InitH { get; set; }
Мой запрос более сложный, но я обнаружил, что проблема в дате. Поэтому я пытаюсь найти оптимальное решение для поиска дат.
public void obtenerFechaHarcodeada()
{
DateTime fecha = new DateTime(2024, 4, 18, 19, 47, 36);
var registro = _dbContext.AssignmentRecords
.FirstOrDefault(r=> r.InitH == fecha);
}
Есть идеи?
Я пытаюсь сохранить ту же дату и ту же переменную для поиска в базе данных, но это никогда не работает.
Вместо точного значения даты/времени я предлагаю вам искать диапазон дат/времени, охватывающий всю секунду.
DateTime fechaFrom = new DateTime(2024, 4, 18, 19, 47, 36);
DateTime fechaTo = fechaFrom.AddSeconds(1);
var registro = _dbContext.AssignmentRecords
.FirstOrDefault(r=> r.InitH >= fechaFrom && r.InitH < fechaTo);
Стоит отметить, что тип SQL Server DATETIME
хранит время с точностью до 1/300 секунды, поэтому отображаемое значение 2024-04-18 19:47:36.337
на самом деле ближе к 2024-04-18 19:47:36.33666...
. Как и в случае со значениями с плавающей запятой, лучше избегать сравнений на равенство.
это решило мою проблему, я использовал это: var registro = _dbContext.AssignmentRecords .FirstOrDefault( r => r.AssigmentId == assigment.id && r.InitH >= horaInicial.AddSeconds(-15) && r.InitH < horaInicial.AddSeconds (15) ); Но теперь я знаю, почему Спасибо