Vb.net到mySQL的datetime转换

时间:2012-10-01 05:53:21

标签: vb.net datetime

嗨,我有这个代码,它给了我错误:

  

值类型与列类型不匹配无法存储< 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)

4 个答案:

答案 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
很多,非常感谢!