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

Access查询:匹配每日输入日期的年月与月度生产目标

按年月匹配Access两张表的查询方案

嘿,这个需求在日常数据库操作里挺常见的——咱们只需要把两张表的日期都提取出年月部分来做关联条件,就能让每日录入的数据匹配到对应月份的生产目标了。下面给你几种实用的SQL写法,你可以根据自己表的实际情况选:

方法1:用Format函数统一年月格式(直观易懂)

如果你的两张表日期字段都是日期/时间类型,直接用Format()把日期转成「年-月」的字符串,就能精准匹配同一月份的记录:

SELECT 
    d.*,
    t.*
FROM 
    tbl_DailyInput AS d
INNER JOIN 
    tbl_ProductionTarget AS t
ON 
    Format(d.DailyDate, "yyyy-mm") = Format(t.TargetDate, "yyyy-mm");

注:这里假设tbl_DailyInput的日期字段叫DailyDate,tbl_ProductionTarget的日期字段叫TargetDate,你可以换成自己表的实际字段名

方法2:用Year+Month组合成数字(性能更优)

如果数据量比较大,用数字形式的年月匹配会比字符串更高效。咱们把年份乘100加月份,比如2024年5月就是202405,这样两个表的年月数字相等就代表是同一月份:

SELECT 
    d.*,
    t.*
FROM 
    tbl_DailyInput AS d
INNER JOIN 
    tbl_ProductionTarget AS t
ON 
    (Year(d.DailyDate) * 100 + Month(d.DailyDate)) = (Year(t.TargetDate) * 100 + Month(t.TargetDate));

特殊场景:目标表存的是每月第一天

如果你的tbl_ProductionTarget里的日期字段固定是每月1号(比如2024-05-01),那可以直接生成每日日期对应的当月第一天来匹配,写法更简洁:

SELECT 
    d.*,
    t.*
FROM 
    tbl_DailyInput AS d
INNER JOIN 
    tbl_ProductionTarget AS t
ON 
    DateSerial(Year(d.DailyDate), Month(d.DailyDate), 1) = t.TargetDate;

小提醒

  • 确保两张表的日期字段都是日期/时间类型,如果是文本格式,记得先用CDate()函数转换,比如CDate(d.DailyDate)
  • 如果想保留所有每日录入数据(哪怕没有对应月份的目标),把INNER JOIN换成LEFT JOIN就行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:47:04