2016-07-29 1 views
0

У меня есть код, который объявляет объектную переменную, и этой переменной присваивается значение из существующего поля базы данных.SQL datetime to string format

Dim datestart As Object 
datestart = dbToDate(dr("DateStart")) 

Переменная затем передается через функцию, которая проверяет, является ли это нуль, а затем преобразует его в тип данных даты и времени.

 Public Shared Function dbToDate(o As Object) As DateTime 

    If o Is DBNull.Value Then 
     Return Nothing 

    Else 
     Return Convert.ToDateTime(o) 

    End If 
End Function 

Последнее, что мне нужно делать с ним преобразовать его в формат для даты строки, DD/MM/YYYY, так что я могу вставить его в новую базу данных.

Функция, которую я до сих пор является

Public Shared Function sqlDate(dt As DateTime) As String 

    Return "'" & Format(dt, "yyyyMMdd") & "'" 

End Function 

Однако, когда я запускаю код, я получаю следующее сообщение об ошибке

Преобразование типа VARCHAR данных для данных даты и времени тип привел к превышению значения.

Почему это и как его исправить?

+0

Проверьте значения в таблице для столбца DateStart. Одна или несколько строк содержат значения, выходящие за пределы, указанные для типа C# DateTime. –

+0

@TheShooter Это vb.net, а не C# –

+0

Извините, я забыл отметить язык, но язык не имеет значения. Базовый тип данных всех языков .net одинаковый. Поместите точку останова в datestart = dbToDate (оператор dr («DateStart»)), проверьте значение dr («DateStart») и посмотрите, находится ли он между DateTime.Mix и DateTime.Max. В качестве альтернативы обратите внимание на значение DateTime.Min и DateTime.Max и в таблице sql найдите строки, которые имеют значение из этого диапазона. –

ответ

0

Просто, вы можете использовать toString функция. Также проверьте свой часовой пояс. Проблема может быть в настройке часового пояса.

Надежда вы передаете дату в виде строки в базу данных, попробуйте передать дату как Datetime переменной, а не строки

Public Shared Function sqlDate(dt As DateTime) As String 

    Return dt.toString("yyyy-MM-dd") 

End Function 

Для Вашего Ref: https://msdn.microsoft.com/en-us/library/8kb3ddd4(v=vs.110).aspx

+0

может показывать код или запросы вставки базы данных? – Sankar

+0

Извините Sankar, моя ошибка, это потому, что я добавил hhmmss tt в конце строки. Однако одна из моих дат имеет значение null, а в функции dbToDate (см. Вопрос) вместо возврата «Nothing» она возвращается в 12:00:00, поэтому эта функция не будет работать, чтобы вставить ее в базу данных. Как мне заставить это работать с ними? –

+0

@joe Итак, вы связываете время с датой. правильно? – Sankar