Вставить дату и время в базу данных


Я использую OleDbCommand для вставки поля даты / времени с использованием параметров и получаю исключение, указывающее ,что " несоответствие типа данных в выражении критерия."

Я определил параметр, вызывающий мою проблему, и выполнение следующего кода вызывает мою ошибку:

insertCmd.CommandText = "INSERT INTO myTable ([ParameterName]) VALUES (?)"
insertCmd.Parameters.AddWithValue("@ParameterName", Now)
insertCmd.Connection = _connection
return insertCmd.ExecuteNonQuery()

Проверяя параметр, который вызывает проблему, я получаю следующее для параметра {@ParameterName}

ChangeID: 1
DbType: DateTime {6}
Direction: Input {1}
IsNullable: False
Offset: 0
OleDbType: DBTimeStamp {135}
ParameterName: "@ParameterName"
Precision: 0
PrecisionInternal: 0
Scale: 0
ScaleInternal: 0
Size: 0
SourceColumn: ""
SourceColumnNullMapping: False
SourceVersion: Current {512}
Value: #10/9/2014 11:26:15 AM# {Date}

Он, по-видимому, распознается как DbType DateTime и объект, вставленный в parameters-это объект даты, но он все еще говорит мне, что есть проблема с типом данных.

Большинство мест, где я видел эту проблему, пытались записать строку в поле даты / времени, чего я определенно не делаю.

1 2

1 ответ:

Попробуйте использовать только значение даты, так как кажется, что ваше поле базы данных является только значением даты (я предполагаю):

insertCmd.Parameters.AddWithValue("@ParameterName", Now.Date)

Или может быть, что OleDB просто смущен типом, поэтому установите его самостоятельно:

Dim p As New OleDbParameter("@parameterName", OleDbType.Date)
p.Value = Now
insertCmd.Parameters.Add(p)