#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. Если нет, то это, вероятно, все еще хорошая идея 🙂