嗨,我有这个代码,它给了我错误:
值类型与列类型不匹配无法存储< 10/1/2012 下午3:43:30>在time_in_am专栏。预期的类型是MySqlDateTime。
“time_in_am”的mySQL数据类型是DateTime。
dataRow = dataSet.Tables(0).NewRow()
dataRow("time_in_am") = DateTime.Now
dataSet.Tables(0).Rows.Add(dataRow)
答案 0 :(得分:1)
我相信MySQL接受的DateTime格式为yyyy-mm-dd hh:mm:ss
所以,将代码的第二行改为:
dataRow("time_in_am") = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
对于每种格式“魔术字符串”的含义,请参阅here
如果您发现自己经常使用(很可能),您可以创建扩展名:
Imports System.Runtime.CompilerServices
Public Module MyExtensions
<Extension()>
Public Function ToMySql(d As Date) As String
Return d.ToString("yyyy-MM-dd HH:mm:ss")
End Function
End Module
现在您可以在代码中使用它,如下所示:
dataRow("time_in_am") = DateTime.Now.ToMySql()
答案 1 :(得分:0)
Return d.toString("yyyy-MM-dd HH:mm:ss")
将解决它..:)
答案 2 :(得分:0)
我认为另一种最短的方法是使用 Format()
dataRow("time_in_am") = Format(DateTime.Now, "yyyy-MM-dd HH:mm:ss")
答案 3 :(得分:-1)
我正在寻找一种方法将此vb6日期转换转换为mysql接受值为vb.net;
'将日期转换为mysql格式
Public Function convToYMD(strDate)
strYear = CStr(Year(strDate))
strmonth = CStr(Month(strDate))
strday = CStr(Day(strDate))
strhour = CStr(Hour(strDate))
strminute = CStr(Minute(strDate))
strsecond = CStr(Second(strDate))
If Len(strhour) = 1 Then
strhour = "0" & strhour
ElseIf Len(strhour) = 0 Then
strhour = "00"
End If
If Len(strminute) = 1 Then
strminute = "0" & strminute
ElseIf Len(strminute) = 0 Then
strminute = "00"
End If
If Len(strsecond) = 1 Then
strsecond = "0" & strsecond
ElseIf Len(strsecond) = 0 Then
strsecond = "00"
End If
If Len(strday) = 1 Then
strday = "0" + strday
ElseIf Len(strday) = 0 Then
strday = "00"
End If
If Len(strmonth) = 1 Then
strmonth = "0" & strmonth
ElseIf Len(strmonth) = 0 Then
strmonth = "00"
End If
convToYMD = strYear + "-" + strmonth + "-" + strday + " " + strhour + ":" + strminute + ":" + strsecond
end function
发现此代码并解决了我的问题! 我刚刚在模块中添加了
If DateFormat.ShortDate Then
Return d.ToString("yyyy-MM-dd")
ElseIf DateFormat.LongDate Then
Return d.ToString("yyyy-MM-dd HH:mm:ss")
End If
很多,非常感谢!