Тип записи на прием DateTime тип данных без секунд?

#c# #sql-server #database #datetime #datetime-format

#c# #sql-сервер #База данных #datetime #datetime-format

Вопрос:

Я новичок в этом вопросе DateTime.

Я пытаюсь создать приложение, в котором вы можете записаться на прием, поэтому при записи на прием потребуется что-то вроде этого: «Понедельник, 20 апреля, 8:00 утра». Я использую SQL Server, и мне нужно знать, как структурировать мою таблицу, а также как сделать это в коде.

Допустим, у меня есть таблица бронирования с назначением времени в качестве DateTime. Смогу ли я сохранить формат типа «Понедельник, 20 апреля, 8: 00 утра» в этом одном поле данных или мне нужно разделить его и выполнить некоторые преобразования в коде или что-то еще? и я также хотел бы увидеть небольшую демонстрацию с кодом C #.

Я действительно сделал все возможное, чтобы попытаться объяснить, в чем моя проблема, извините, если это расплывчато или сбивает с толку.

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

1. «Понедельник, 20 апреля, 8:00 утра» — это не DateTime, это строковое представление DateTime. Возможность использования этого строкового представления в INSERT инструкции зависит от многих факторов, и самый простой способ узнать это — просто проверить это. Вам лучше выбрать другое строковое представление, если вы хотите использовать необработанный запрос INSERT ( appointmentTime.ToString("s") или $"{appointmentTime:s}" ).

2. Если вы не хотите думать о такого рода вещах — просто используйте некоторые ORM framework , например, EntityFramework .

3. Я бы не предлагал генерировать SQL-запрос вручную. Всегда используйте параметры при добавлении пользовательского ввода, чтобы быть защищенным от атак SQL-инъекций!

Ответ №1:

SQL Server не имеет типа DateTime без секунд, поэтому они всегда будут храниться в базе данных. Также не выполняется .NET framework. Обычно вы просто устанавливаете секунды вашего DateTime равными 0 при сохранении и игнорируете секунды в своих выходных данных, чтобы достичь этого.

 DateTime appointmentDate = DateTime.UtcNow;
DateTime appointmentDateToStore = new DateTime(
    appointmentDate.Year,
    appointmentDate.Month,
    appointmentDate.Day,
    appointmentDate.Hour,
    appointmentDate.Minute,
    0);
  

То, как вы сохраняете это в базе данных, зависит от выбранного вами уровня доступа к данным.

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

1. Спасибо, теперь я понял идею. 🙂

2. Кроме того, вы будете работать с разными часовыми поясами? Если это так, я настоятельно рекомендую вам всегда использовать время UTC. Если нет, то это, вероятно, все еще хорошая идея 🙂