需要帮助比较通过 vba 访问的日期
need help comparing dates in access via vba
我有以下问题:无法获取 sql 查询来处理日期。以下查询:
strRowSource = "SELECT [ID],[TaskType],[TaskName],[StartDate],[EndDate],[isFinished] " & _
"FROM tblTasks " & "WHERE [Person] = " & TempVars("CurrentUser") & " AND [EndDate] < #" & Format(Now(), "short date") & "#"
return 没有任何价值。我想得到的是过期的任务列表。
提前致谢
我正在使用这个方便的函数来格式化日期:
Public Function JetSqlDate(ByVal d As Variant) As String
If IsNull(d) Then
JetSqlDate = "NULL"
Else
JetSqlDate = Format$(d, "\#mm\/dd\/yyyy hh\:nn\:ss\#")
End If
End Function
用法:
strRowSource = "SELECT ID, TaskType, TaskName, StartDate, EndDate, isFinished " & _
"FROM tblTasks WHERE Person = " & TempVars("CurrentUser") & _
" AND EndDate < " & JetSqlDate(Now())
请注意,转义列名 ([]
) 仅在列名包含空格等无效字符或与关键字冲突时才需要。例如。如果您有一个名为 From
的列,则必须将其写为 [From]
.
对于 SQL-我使用的服务器直通查询:
Public Function TSqlDate(ByVal d As Variant) As String
If IsNull(d) Then
TSqlDate = "NULL"
Else
TSqlDate = "{ ts '" & Format$(d, "yyyy\-mm\-dd hh\:nn\:ss") & "' }"
End If
End Function
对于字符串:
Public Function SqlStr(ByVal s As String) As String
'Input: s="" Returns: NULL
'Input: s="abc" Returns: 'abc'
'Input: s="x'y" Returns: 'x''y'
If s = "" Then
SqlStr = "NULL"
Else
SqlStr = "'" & Replace(s, "'", "''") & "'"
End If
End Function
请注意,此函数添加分隔符并转义字符串值中包含的任何分隔符。这使得查询更可靠,也可以防止 SQL Injection.
您可以将其减少为:
strRowSource = "SELECT ID, TaskType, TaskName, StartDate, EndDate, isFinished " & _
"FROM tblTasks " & _
"WHERE Person = " & TempVars("CurrentUser") & " AND EndDate < Now()"
我有以下问题:无法获取 sql 查询来处理日期。以下查询:
strRowSource = "SELECT [ID],[TaskType],[TaskName],[StartDate],[EndDate],[isFinished] " & _
"FROM tblTasks " & "WHERE [Person] = " & TempVars("CurrentUser") & " AND [EndDate] < #" & Format(Now(), "short date") & "#"
return 没有任何价值。我想得到的是过期的任务列表。
提前致谢
我正在使用这个方便的函数来格式化日期:
Public Function JetSqlDate(ByVal d As Variant) As String
If IsNull(d) Then
JetSqlDate = "NULL"
Else
JetSqlDate = Format$(d, "\#mm\/dd\/yyyy hh\:nn\:ss\#")
End If
End Function
用法:
strRowSource = "SELECT ID, TaskType, TaskName, StartDate, EndDate, isFinished " & _
"FROM tblTasks WHERE Person = " & TempVars("CurrentUser") & _
" AND EndDate < " & JetSqlDate(Now())
请注意,转义列名 ([]
) 仅在列名包含空格等无效字符或与关键字冲突时才需要。例如。如果您有一个名为 From
的列,则必须将其写为 [From]
.
对于 SQL-我使用的服务器直通查询:
Public Function TSqlDate(ByVal d As Variant) As String
If IsNull(d) Then
TSqlDate = "NULL"
Else
TSqlDate = "{ ts '" & Format$(d, "yyyy\-mm\-dd hh\:nn\:ss") & "' }"
End If
End Function
对于字符串:
Public Function SqlStr(ByVal s As String) As String
'Input: s="" Returns: NULL
'Input: s="abc" Returns: 'abc'
'Input: s="x'y" Returns: 'x''y'
If s = "" Then
SqlStr = "NULL"
Else
SqlStr = "'" & Replace(s, "'", "''") & "'"
End If
End Function
请注意,此函数添加分隔符并转义字符串值中包含的任何分隔符。这使得查询更可靠,也可以防止 SQL Injection.
您可以将其减少为:
strRowSource = "SELECT ID, TaskType, TaskName, StartDate, EndDate, isFinished " & _
"FROM tblTasks " & _
"WHERE Person = " & TempVars("CurrentUser") & " AND EndDate < Now()"