Вы не можете просто набить один тип данных в переменную другого без convertin г. Часть кода не будет компилировать под Option Strict, потому что он пытается сделать именно это:
Dim cdr_date As DateTime = reader.GetDateTime(0).ToString()
Это звучит, как вы пытаетесь раздеть время от дб вар, поэтому получить его в качестве DateTime
тогда, если вы должны использовать его как строку где-то преобразовать его:
Dim myDT As DateTime
rdr.Read()
' these do the same thing - get it as date:
myDT = Convert.ToDateTime(rdr("zDateTime"))
myDT = rdr.GetDateTime(0)
Задан всегда будет иметь дату и время. Чтобы игнорировать Время, используйте что-то вроде "MM/dd/yyyy"
, чтобы игнорировать его либо при его отображении, либо преобразовании в строку. SubString
и магическое число 10 не требуется.
TextBox13.Text = myDT.ToString("MM/dd/yyyy")
Или сохранить в строковой переменной:
Dim notADate As String
' from a DB Reader:
notADate = rdr.GetDateTime(0).ToString("MM/dd/yyyy")
' in general:
notADate = myDT.ToString("MM/dd/yyyy")
Однако это: unable to convert datetime to system datetime
показывает что-то еще неправильно. Объект поставщика DB, по-видимому, не может преобразовать данные db в NET DateTime Type. Наиболее вероятная причина - плохие данные.
Вместо NULL, MySQL может быть сказано, чтобы сохранить 01/01/0001 00:00:00
как «нулевой даты» Для этого, вам может понадобиться изменить строку подключения для добавления этого:.
"server=....;convertzerodatetime=True;allowzerodatetime=True"
Они позволяют сохранять и преобразование в противном случае недействительными DateTime
. AllowZeroDateTime
, в частности, вернет нулевое время, а не исключение. В этом случае (разрешено в комментариях), поскольку возврат был нулевой датой, но не то, что видно в БД, удаляя его и создавая новая строка разрешила его.
Есть много, много o Ther опции для подключения MySQL:
MySQL ConnectionString options
, что вы имеете в виду, только первые 10 символов? Вы пытаетесь отделить Время? Если переменной DateTime, лучше всего оставить ее как DateTime. Он не будет действовать, как DateTime, когда в строке – Plutonix
мое поле MySQL является 'Date', но при запуске запроса select в vb.net по какой-то причине отображается как' DateTime', так как он вернет дату, а затем '00:00 : 00', так что я просто пытаюсь получить дату, но ее прекрасное получение ее как строки. после его выбора больше не нужно быть 'Date' – charlie
да, я могу сделать, почему? – charlie