В веб-приложении, над которым я работаю, веб-приложение должно принимать значения DateTime
, так как клиенты могут не знать информацию о своей дате рождения. Конечно, это непростая задача, потому что в C# DateTime
не имеет значения NULL.DateTime принимает значение null
DateTime rawBirthDate = Convert.ToDateTime(txtDOB.Text);
fxTxn.BirthDate = rawBirthDate;
с этим, я должен был изменить свой код, чтобы принять нулевое значение:
DateTime? rawBirthDate = string.IsNullOrEmpty(txtBirthDate) ? (DateTime?)null : DateTime.Parse(txtBirthDate);
fxTxn.BirthDate = Convert.ToDateTime(rawBirthDate);
этот код, в свою очередь, возвращает 1/1/0001 12:00:00.000 AM
. Однако MSSQL выбрасывает DateOutOfRangeException
, говоря, что дата должна быть между 1/1/1753 и 12/31/9999.
Я полностью застрял здесь. В моей таблице SQL я разрешил столбцу BirthDate
принимать нулевые значения. Вопрос в том, как заставить C# считать значения null DateTime? Конечным результатом будет то, что если Клиент не предоставил информацию о дате рождения, система все равно сможет сохранить запись, но столбец BirthDate в записи клиента все равно будет NULL.
Что такое 'fxTxn'? Как вставить/обновить значение даты в базе данных? – Corak
В качестве побочного примечания сообщение об ошибке указывает, что столбец является ['datetime'] (http://msdn.microsoft.com/en-us/library/ms187819.aspx). Если вы используете SQL Server 2008 или более позднюю версию, вы должны вместо этого использовать 'date' или' datetime2' - эти типы более эффективны, а 'datetime2' лучше выравниваются с классом .NET' DateTime'. –
'DateTime' не имеет значения NULL, но 'DateTime?' Есть. Извините, это простая задача. –