You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MS Access查询中将DATE()替换为SQL Server的GETDATE()

实现方法分两种场景,根据你使用的查询类型选择:

场景1:使用SQL Server传递查询(可直接调用GETDATE())

普通Access选择查询的表达式会先由Access数据库引擎解析,本身不识别SQL Server的GETDATE()函数,也不会在Access的表达式生成器中展示该函数,需要切换到传递查询模式:

  • 打开Access,点击「创建」选项卡→「查询设计」,关闭弹出的表选择窗口
  • 点击顶部「设计」选项卡→「传递」,切换为传递查询模式
  • 点击「设计」选项卡→「属性表」,在「ODBC连接字符串」栏选择你之前链接SQL Server使用的ODBC数据源
  • 直接编写SQL Server语法的查询语句即可,计算日期间隔的示例如下:
    SELECT DATEDIFF(day, [DATE], CAST(GETDATE() AS DATE)) AS 间隔天数 FROM 你的SQL Server表名
    
    注:CAST(GETDATE() AS DATE)是为了去掉GETDATE()默认携带的时间部分,和Access原生DATE()的输出格式对齐,如果你需要保留时间计算可以去掉这层转换

场景2:继续使用普通Access查询(基于ODBC链接表)

如果你不想改用传递查询,需要提前在SQL Server侧做封装:

  • 先在SQL Server中创建视图,提前写入GETDATE()的计算逻辑,示例:
    CREATE VIEW vw_日期计算 AS
    SELECT *, CAST(GETDATE() AS DATE) - [DATE] AS 间隔天数 FROM 你的原表名
    
  • 将这个视图作为链接表新增到Access中,后续在Access普通查询的表达式生成器中,直接调用该链接视图的「间隔天数」字段即可

补充说明:如果你的计算逻辑不需要精确到时间,直接保留Access原生的DATE() - [DATE]写法也能得到正确结果,Access会自动把DATE()的当前日期值转成标准日期格式发送给SQL Server执行查询,不需要额外修改

内容的提问来源于stack exchange,提问作者Robleh100

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 17:36:03