Для начала, ошибка я получаю следующим образом:Casting SQL Дата валютирования с помощью Convert.ToDateTime в C# не удается
Преобразование типа VARCHAR данных в тип данных даты и времени в результате Аут - значение диапазона.
Что я сделал возвращается набор данных из базы данных SQL в DataTable, оттуда я бегу в if
заявление на С # стороне кода, чтобы определить, является ли одна дата больше другой. Это работало на многочисленных развертываниях, однако конкретное развертывание на новом сервере приводит к вышеуказанной ошибке.
Вот мой код:
if
(
Convert.ToDateTime(ds.Tables[0].Rows[0]["StartDate"].ToString()).Date >
Convert.ToDateTime(ds.Tables[0].Rows[0]["OriginalStartDate"].ToString()).Date
)
{
... do stuff ...
}
Я понимаю, что данные внутри колонны, преобразуется в строку, не удается при попытке выполнить Convert.ToDateTime()
недоумение вопрос, однако, что это код работал на других серверах, и этот вопрос изолирован. Поэтому я понимаю, что он может быть уникальным для сервера, но я не знаю, где искать.
Изменение каких-либо региональных настроек и т. Д., К сожалению, не является вариантом, поэтому я пытаюсь найти способ обойти это!
Любая помощь приветствуется!
Что такое формат дат в базе данных? Вероятно, даты записываются в одном формате, а ваше преобразование выполняется в другом. – MPelletier
Что такое * type * в базе данных? Это должен быть DateTime, что означает, что вы не должны конвертировать в строку и обратно вообще. Просто используйте 'if ((DateTime) ds.Tables [0] .Rows [0] [" StartDate "]> (DateTime) ds.Tables [0] .Rows [0] [" OriginalStartDate "]))' –
Двойная проверка 'type' оба поля имеют тип DateTime. @JonSkeet. Я попробую ваше предложение. Что касается формата, это выглядит как '2015-07-01 00: 00: 00.000' @MPelletier –