2016-09-15 2 views
-1

Внутри db table У меня есть колонкаИзмени DateTime

MyTime где тип данных time(7)

Представительство в области образования является

public DateTime MyTime { get; set; }  

мой вопрос: как я могу конвертировать Mytime недвижимость возвращать данные, поскольку DateTime вызывает этот путь, я получаю следующую ошибку:

Сведения об исключении: System.InvalidCastException: Указанный литой не действителен.

p.s. Я не хочу изменять тип данных DateTime в домене.

+1

Что вы уже пробовали? Вы сообщили, что проблема, но что вы уже пытались решить эту проблему? – user2676140

+1

Почему бы не изменить его на 'TimeSpan'? 'time (7)' не может представлять дату, поэтому она будет более естественной. – juharr

+0

Подсказка: DateTime представляет собой целочисленное значение, представляющее X-время с эпохи (1 января 1970 г.). Таким образом, у него нет «даты» или «времени» как такового. Итак, если вы хотите использовать DateTime, вам нужно использовать секунды/миллисекунды с эпохи. –

ответ

0

Изменить запрос к базе данных, чтобы вернуть значение time(7) в качестве даты-времени.

I.e. вместо:

SELECT ... MyTime ... 

вы можете использовать

SELECT ... CAST(MyTime AS DATETIME) AS MyTime ... 
0

Нет, это не возможно непосредственно как время продолжительности и его не дата. Но если у вас есть контрольная дата, вы можете это сделать.

static DateTime GetDateTime(string timeStr) 
    { 
    return DateTime.Parse("01/01/2012 " + timeStr); 
    } 
0

В вашем слое доступа к данным, где вы читаете значение для столбца времени типа (7), вы должны быть в состоянии бросить его в объект DateTime следующим образом:

myObj.MyTime = Convert.ToDateTime(Convert.ToString(reader["my_time_column_in_db"])); 

В выше, «my_time_column_in_db» - это имя столбца, определенного как тип времени (7) в вашей базе данных. Полученное свойство myObjTime.MyTime закончится сегодняшней датой для части mm/dd/yyyy и будет иметь любое значение, возвращаемое из базы данных для hh: mm: ss part.

Смежные вопросы