【问题标题】:Access query compare datetime to year only date?访问查询将日期时间与仅年份日期进行比较?
【发布时间】:2014-08-01 23:32:01
【问题描述】:

我的 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 日期进行比较?

【问题讨论】:

  • 这个问题和Sql Sever有什么关系?

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2011-09-11
    • 2016-07-24
    • 2014-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多