我想將一些數據從SQL Server拉到Microsoft Excel 2007.我有連接設置和一切似乎工作正常,除了時間戳。我只能得到日期,而不是相應的小時,分鍾或秒。我可以使用Excel ODBC查詢工具從SQL數據庫中提取數據,並在那裏列出小時和分鐘。我嘗試了各種不同的CAST()選項。他們都沒有解決我的問題。我正在運行Windows XP。我不知道服務器上運行的Microsoft SQL版本是什麼。我的代碼如下所示。不完整的時間戳使用ADODB與VBA的Excel
Sub Populate_Sheet(theSheet As Worksheet)
'Declare variables'
Dim objMyConn As ADODB.Connection
Dim objMyCmd As ADODB.Command
Dim objMyRecordset As ADODB.Recordset
Set objMyConn = New ADODB.Connection
Set objMyCmd = New ADODB.Command
Set objMyRecordset = New ADODB.Recordset
Dim executeThisSQLStatement As String
'Dim target As Worksheet
'Set target = theSheet
executeThisSQLStatement = "SELECT CAST(DateHour_CPT AS TIMESTAMP) FROM EnergyData_v"
'Open Connection'
objMyConn.ConnectionString = "driver={SQLServer};Data Source=DataMart;User ID=acctname.value;Password=mypass.value;"
objMyConn.Open
'Set and Excecute SQL Command'
Set objMyCmd.ActiveConnection = objMyConn
objMyCmd.CommandText = executeThisSQLStatement
objMyCmd.CommandType = adCmdText
'Open Recordset'
Set objMyRecordset.Source = objMyCmd
objMyRecordset.Open
'Copy Data to Excel'
theSheet.Range("A6").CopyFromRecordset objMyRecordset
End Sub
你的意思是轉換爲DATETIME而不是TIMESTAMP? SQL Server在命名TIMESTAMP類型時犯了一個很大的錯誤 - 它聽起來就像ANSI SQL類型,它代表着與日期和時間有關的事情,它與任何一個都沒有關係。試着在查詢窗口中忽略所有的VBA和Excel干擾:'SELECT CAST(GETDATE()as TIMESTAMP);' –
另外,你不應該說「我不知道我正在運行哪個版本」 - 使用'SELECT @@ VERSION;'這樣做很簡單。 –
它可能是Excel格式化的問題。嘗試將日期列單元格的格式更改爲「yyyy-mm-dd hh:mm:ss」 – Vasanth