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

如何在Access数据库中查询非连续日期下的周末及月末有效股票数据

解决Access非连续股票数据的周末/月末节点查询方案

核心思路

不用匹配标准的周末、月末日历日期,直接按时间周期分组,取每个周期内最晚的交易日数据即可,刚好匹配你需要的「周期内最后一个有效交易日收盘价」需求。而且你表里有DateSecondsUnix时间戳字段,无需转换文本日期就能直接做大小比较,效率更高。

具体实现方法

1. 基础准备(可选:文本日期转日期类型)

如果需要基于日期做更复杂的计算,可以先把DateFormatted短文本转为Access日期类型:

CDate(DateFormatted) AS TradeDate

2. 查询所有股票各周最后一个交易日的收盘价

这里默认周起始为周一,若需调整周起始规则,修改DatePart的第三个参数即可:

SELECT t.*
FROM 股票表 t
INNER JOIN (
    SELECT CodeName, 
           DatePart("yyyy", CDate(DateFormatted)) AS TradeYear,
           DatePart("ww", CDate(DateFormatted), vbMonday) AS TradeWeek,
           MAX(DateSeconds) AS MaxWeekSecond
    FROM 股票表
    GROUP BY CodeName, DatePart("yyyy", CDate(DateFormatted)), DatePart("ww", CDate(DateFormatted), vbMonday)
) AS week_max ON t.CodeName = week_max.CodeName AND t.DateSeconds = week_max.MaxWeekSecond;

你提供的示例中,2000年1月第一周返回的就是DateSeconds为947030400、收盘价为1.05的记录,和预期结果一致。

3. 查询所有股票各月最后一个交易日的收盘价

SELECT t.*
FROM 股票表 t
INNER JOIN (
    SELECT CodeName, 
           DatePart("yyyy", CDate(DateFormatted)) AS TradeYear,
           DatePart("m", CDate(DateFormatted)) AS TradeMonth,
           MAX(DateSeconds) AS MaxMonthSecond
    FROM 股票表
    GROUP BY CodeName, DatePart("yyyy", CDate(DateFormatted)), DatePart("m", CDate(DateFormatted))
) AS month_max ON t.CodeName = month_max.CodeName AND t.DateSeconds = month_max.MaxMonthSecond;

4. 单只股票单个周期的快速查询

如果只需查某只股票指定月/周的收盘价,直接取最大时间戳对应的记录即可,无需分组:

-- 查询AAA股票2000年1月最后一个交易日的收盘价
SELECT TOP 1 Close
FROM 股票表
WHERE CodeName = 'AAA' 
  AND DatePart("yyyy", CDate(DateFormatted)) = 2000
  AND DatePart("m", CDate(DateFormatted)) = 1
ORDER BY DateSeconds DESC;

注意事项

  • 如果确认DateFormatted的格式统一为yyyy-mm-dd,文本转日期的步骤不会出错,若存在格式不一致的情况,优先用DateSeconds字段做时间排序逻辑即可
  • Access的DatePart周计算规则可以通过第三个参数自定义,可选值包括vbSunday(周日为周首日,默认)、vbMonday(周一为周首日)等,可根据你的统计规则调整

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 02:48:03