Как создать переменную datetime с миллисекундой в c#? (блейзор)

#c# #datetime

Вопрос:

 private Task OnProjectCreated()
{
    DateTime now = DateTime.Now.AddMilliseconds(1000);

    ProjectModel newProject = new ProjectModel
    {        
        ProjectName = "ProjectA",
        ProjectUpdated = now
    }

    _db.InsertProject(newProject);
    var currentProject = _db.GetProjectByTime<ProjectModel>(now);

    //here, the currentProject object is passing to the parent component(balzor)
    return ProjectCreated.InvokeAsync(currentProject);
    
}
 

Я хочу извлечь проект из базы данных по дате и времени, но переменная даты и времени «сейчас» не имеет миллисекунд, поэтому я получаю ошибку типа «Последовательность не содержит элементов». Поэтому я добавил AddMilliseconds(1000), но он все еще не работает. Я думаю, что переменная «сейчас» не совпадает с Project.ProjectUpdated, которая сохраняется в базе данных.

Я управлял таблицей проектов в среде sql server management studio, и там все данные проекта сохраняются в миллисекундах, но когда я использую «сейчас» в качестве аргумента в _db.GetProjectByTime(сейчас) не имеет миллисекунд. Как я могу это решить? Заранее благодарю вас!

 public ProjectModel GetProjectByTime<ProjectModel>(DateTime dateTime)
     {
         string sql = $"select * from Projects where ProjectUpdated = 
         '{dateTime}'";
         var data = _accessDb.GetData<ProjectModel>(sql);

         return data;
     }
 

проблема в том, что ProjectUpdated в бд сохраняется следующим образом:2021-06-07 17:46:28.747, но когда я использую «сейчас» в качестве аргумента в _db.GetProjectByTime(сейчас), это выглядит так: 2021-06-07 17:46:28 я имею в виду без миллисекунд (как я контролировал точки останова при запуске)

Комментарии:

1. В чем проблема? Записи не возвращены? Затем покажите код базы данных. Запрос и все, что связано с определением модели.

2. Я отредактировал приведенный выше код. Спасибо

3. На самом деле я хочу иметь переменную datetime с миллисекундой, чтобы я мог получить проект по его свойству ProjectUpdated. Все проекты сохраняются в этом формате 2021-06-07 17:46:28.747, поэтому у меня должен быть такой же формат в переменной «сейчас» _db.GetProjectByTime(сейчас). но здесь, когда я использую DateTime сейчас = DateTime. Сейчас; «сейчас», кажется, не имеет миллисекунд. Я пробовал использовать AddMilliseconds(1000), но это не работает.

4. Дата-время не имеет «формата». Это относится только к строковому представлению. Тип в вашей базе данных все еще неясен.

5. спасибо, что уделили мне время. Я решил эту проблему.

Ответ №1:

Я изменил строку sql на

 string sql = $"select * from Projects where ProjectUpdated = CONVERT(datetime, '{dateTime}')";
 

и сейчас это работает без проблем.

Комментарии:

1. Привет, не могли бы вы отметить свой вопрос как ответ, пожалуйста.

2. Привет, я не могу проголосовать за свой собственный ответ или отметить вопрос как ответ до 2 дней.

3. НП. Я не знал, что тебе пришлось ждать 48 часов 🙂