【发布时间】:2023-04-09 17:50:01
【问题描述】:
下面的函数工作正常并输出正确的结果,除了它将日期输出为字符串而不是日期。我怎样才能让它输出日期呢?
Function GetExpiries_YieldX(TradeDate As Date, Code As String) As Variant
'Create and open the connection
Dim oConnection As Connection
Set oConnection = New Connection
oConnection.ConnectionString = strConnectionStringYieldX
oConnection.Open
'Create the command object
Dim oCommand As Command
Set oCommand = New Command
oCommand.CommandType = adCmdText
Dim SQLString As String
SQLString = "SELECT DISTINCT Expiry" _
& " FROM MTM" _
& " WHERE TradeDate = ?" _
& " and Code = ?"
oCommand.CommandText = SQLString
oCommand.ActiveConnection = oConnection
oCommand.Parameters.Append oCommand.CreateParameter("Date", adDBTimeStamp, adParamInput)
oCommand.Parameters.Append oCommand.CreateParameter("Code", adVarChar, adParamInput, 50)
oCommand.Parameters.Item("Date").Value = TradeDate
oCommand.Parameters.Item("Code").Value = Code
Dim result As New ADODB.Recordset
Set result = oCommand.Execute
Dim resultA As Variant
'GetExpiries_YieldX = WorksheetFunction.Transpose(result.GetRows)
GetExpiries_YieldX = result.GetRows
oConnection.Close
End Function
【问题讨论】:
-
数据库中的列Expiry是否定义为DataTime?
-
你对结果集做了什么?如果放入工作表范围,您可以使用 Range(..).CopyFromRecordset 方法将记录集转储到一个范围中,然后使用 NumberFormat 修改这些范围的格式
-
@Philip 不,它只是
date类型(SQL Server 2008 顺便说一句),我将日期放在工作表上。目前,我只是将它们转换为做这种事情的日期:=DATE(LEFT(A2,4),MID(A2,6,2),RIGHT(A2,2)),但如果可能的话,我希望它们只是作为日期出现。我发现很难找到关于如何正确编写这类函数(即查询 sql server dbs 的 vba 函数)的体面文档:/ -
或者您可以尝试将 Expiry 字段转换为 SQL 字符串中的日期格式:“SELECT DISTINCT CDATE(Expiry)...
-
转换只返回#VALUES...