访问查询比较日期时间与年份日期?

时间:2014-06-11 19:17:55

标签: sql sql-server-2008 vba ms-access datetime

我的Access数据库中有以下SQL查询,连接到SQL Server 2008:

SELECT COUNT(*) as mCount 
FROM [Projects]
WHERE [DateProjectSubmitted]>'2014';

这很有效,完全符合我的需要。

但是,我似乎无法在我的函数中修改Access中的工作查询(删除了所有错误处理):

Public Function getNumberOfYearToDateProjects() As Integer
    Dim rsMyRecordSet As ADODB.Recordset
    Dim sSql As String


    Set rsMyRecordSet = New ADODB.Recordset
    sSql = "SELECT COUNT(*) as mCount FROM [Projects] WHERE [DateProjectSubmitted]>#" & Format(Date, "YYYY") & "#"

    rsMyRecordSet.Open sSql, CurrentProject.Connection
    getNumberOfYearToDateProjects = rsMyRecordSet.Fields("mCount")

End Function

我知道Access在日期表达式中需要#符号,但我似乎无法将2014识别为比较目的的日期。

如果我直接复制SQL,我会遇到数据不匹配的问题。

我可以做到以下几点,但这看起来很难看

sSql = "SELECT COUNT(*) as mCount FROM [Projects] WHERE [DateProjectSubmitted]>#" & DateSerial(Year(Date), 1, 1) & "#"

我可以修改SQL查询,还是需要使用类似DateSerial的内容来创建假的2014-01-01日期进行比较?

1 个答案:

答案 0 :(得分:3)

假设DateProjectSubmitted是一个日期字段,而yourYear是一个数字

SELECT COUNT(*) as mCount FROM [Projects] WHERE YEAR([DateProjectSubmitted]) > " & yourYear