Вы не должны думать о базе данных как о хранении значений в определенном строчном формате вообще - не более, чем в нем хранятся числа как десятичные или шестнадцатеричные.
Вместо этого вы должны просто просмотреть его как дату/время, например.
// TODO: Do you really want the local time, rather than UtcNow?
// TODO: Change TRANSACT_DATE to be TransactionDate ideally, to follow
// .NET naming conventions
newEntry.TRANSACT_DATE = DateTime.Now;
При извлечении значения, вы должны получить DateTime
в этой точке тоже. Затем, если вы хотите отобразить это значение для пользователя, вы можете применить определенный формат. Разным пользователям могут потребоваться разные форматы - и даже они могут отображать одну и ту же дату/время в разных часовых поясах.
Важно различать встроенные данные, которые вы храните (в данном случае дату/время), и текстовый формат, который используется для отображения любого конкретного контекста/приложения. Вам следует избегать конверсий в/из строк в любое время, когда вам это действительно не нужно. В идеале, это должно быть только на границе вашего приложения - например, при отображении текста пользователю или, возможно, сериализации в JSON или XML. Всякий раз, когда API позволяет вам не выполнить преобразование (например, с параметром базы данных), вы должны его избегать.
Что касается вашей текущей ошибки - возможно ли, что это другое поле, которое вы не заселяете, и поэтому использует default(DateTime)
, что было бы вне пределов досягаемости? Это будет иметь большой смысл - в то время как DateTime.Now
действительно не должен быть вне пределов досягаемости, если только вы не применяли отдельное ограничение, или ваши системные часы - это мили.
Почему вы преобразовываете 'DateTime.Now' в строку и затем снова? Просто используйте 'DateTime.Now' ... и обратите внимание, что значение базы данных не будет * иметь * формат, по сути - формат, который он использует при преобразовании в строку, не имеет отношения к тому, что хранится. –
, потому что это не в формате, который я хочу – lcc
Я нахожу, что эти исключения «исключение вне времени» почти всегда относятся к попытке сохранить '01 -01-0001 00:00:00 'в базе данных, проверьте SQL отправляется в БД – paul