嗨,我有这段代码,它给了我错误:
值的类型与列类型不匹配无法在 time_in_am 列中存储 <10/1/2012 3:43:30 PM>。预期类型是 MySqlDateTime。
“time_in_am”的 mySQL 数据类型是 DateTime。
dataRow = dataSet.Tables(0).NewRow()
dataRow("time_in_am") = DateTime.Now
dataSet.Tables(0).Rows.Add(dataRow)
我相信 MySQL 接受的 DateTime 格式是yyyy-mm-dd hh:mm:ss
因此,将代码的第二行更改为:
dataRow("time_in_am") = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
有关每种格式“魔术字符串”的含义,请参见此处
如果您发现自己经常使用它(这很可能),您可以创建一个扩展:
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()
Return d.toString("yyyy-MM-dd HH:mm:ss")
会解决的.. :)
我认为另一种最短的方法是使用 Format()
dataRow("time_in_am") = Format(DateTime.Now, "yyyy-MM-dd HH:mm:ss")
我正在寻找一种方法来将此 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
非常感谢!