У меня есть временная метка в Excel в формате d/m/yyy hh:mm:ss.000, и я отправляю ее в тип данных datetime в SQL Server.Но когда я передаю данные, они были переданы правильно, но без миллисекунд у всех данных есть .000 в конце.В Excel у меня есть дата с правильными миллисекундами.У кого-нибудь есть решение?
d/m/yyy hh:mm:ss.000
.000
Вы можете получить текст ячейки и отформатировать перед вставкой в db:
Dim strValue as String strValue=shtSheetToWork.Cells(RowCounter, 13).Text
снова отформатируйте strValue перед вставкой в db rs(0), если это тип datetime.
strValue
rs(0)
datetime
Sub Sectie1Invert() Dim Cn As ADODB.Connection Dim ServerName As String Dim DatabaseName As String Dim TableName As String Dim UserID As String Dim Password As String Dim rs As ADODB.Recordset Dim rs1 As ADODB.Recordset Dim RowCounter As Long Dim NoOfFields As Integer Dim StartRow As Long Dim EndRow As Long Dim ColCounter As Integer Dim trigger As Boolean Set rs = New ADODB.Recordset ServerName = "NLDONL0113" ' Enter your server name here DatabaseName = "Stroomwaarden" ' Enter your database name here TableName1I = "Sectie1invert" ' Enter your Table name here UserID = "" ' Enter your user ID here Password = "" ' Enter your password here NoOfFields = 1 ' Enter number of fields to update (eg. columns in your worksheet) StartRow = 3 ' Enter row in sheet to start reading records EndRow = 349 ' Enter row of last record in sheet Dim shtSheetToWork As Worksheet Set shtSheetToWork = ActiveWorkbook.Worksheets("Sheet1") '******** Set Cn = New ADODB.Connection Cn.Open "Driver={SQL Server};Server=" & ServerName & ";Database=" & DatabaseName & _ ";Uid=" & UserID & ";Pwd=" & Password & ";" rs.Open TableName1I, Cn, adOpenKeyset, adLockOptimistic For RowCounter = StartRow To EndRow rs.AddNew 'On Error Resume Next rs(0) = shtSheetToWork.Cells(RowCounter, 13) rs(3) = shtSheetToWork.Cells(RowCounter, 14) Debug.Print RowCounter Next RowCounter rs.UpdateBatch rs.Close Set rs = Nothing Cn.Close Set Cn = Nothing End Sub