节假日查询:为什么只能查 2018 年起?数据覆盖范围与边界说明
# 节假日查询:为什么只能查 2018 年起?数据覆盖范围与边界说明
> 接口 894(接入点 894-6 / 894-7) · 免费 · POST/GET · 返回 JSON · 适用人群:开发者、产品 · 阅读时间:约 5 分钟
## TL;DR
- 894-6、894-7 **明确只支持 2018 年(含)起**的数据;更早年份查不到。
- 次年数据通常在当年 **10–11 月**随国务院文件更新,未更新前查次年会缺失。
- 业务层必须兜底"查不到旧年份 / 查不到次年"的情况,别让用户看到崩溃。
## Why:把"查不到"变成可预期
不少团队想用节假日查询做历史考勤回溯(查 2015 年某天),结果发现没数据。这不是 bug,是数据覆盖范围限制。提前在文档/代码里讲清边界,能少一大半工单。
## What:数据覆盖范围(来自文档原文)
| 接入点 | 文档原文表述 |
|--------|------|
| 894-6 节假日查询 | "节假日查询功能支持自 2018 年以来的数据。次年的节假日数据通常会在当年 10 月至 11 月期间更新。" |
| 894-7 调休日列表 | "支持查询自公元 2018 年起任意年份的调休日安排。" |
| 894-4 假日列表 | 按年查询(默认当年),同样受上游数据覆盖范围约束 |
## How:在代码里优雅兜底
```python
def safe_day_check(day: str, appkey: str):
year = int(day[:4])
if year < 2018:
# 数据覆盖范围之外,业务层自行决定:返回"未知"或回退本地规则
return {"day": day, "type": None, "note": "2018 年前数据不支持,已回退本地规则"}
r = requests.post("https://route.showapi.com/894-6",
params={"appKey": appkey, "day": day}, timeout=10)
b = r.json()["showapi_res_body"]
if str(b["ret_code"]) != "0":
return {"day": day, "error": b.get("showapi_res_error")}
return b
```
```python
# 跨年查询次年(如 12 月查 2027):次年数据可能尚未更新
def check_next_year(day_next_year: str, appkey: str):
r = requests.post("https://route.showapi.com/894-6",
params={"appKey": appkey, "day": day_next_year}, timeout=10)
b = r.json()["showapi_res_body"]
if str(b["ret_code"]) != "0" or not b.get("holiday"):
return {"day": day_next_year, "note": "次年数据可能尚未更新,结果仅供参考"}
return b
```
## 进阶 / 边界
- **2018 年前**:直接返回"不支持",或回退到你自己的本地节假日表,不要依赖接口。
- **次年窗口**:10–11 月前查次年,数据可能不全;若产品需要"提前规划明年排班",要提示用户"以更新后为准"。
- **894-4 按年**:同样受覆盖范围约束,传 2017 及更早年份不会报错但无数据。
## FAQ
**Q1:能查 2010 年的节假日吗?**
A:不能。894-6 / 894-7 数据自 2018 年起,更早年份无数据。
**Q2:为什么 12 月查明年劳动节没结果?**
A:次年数据通常 10–11 月才更新,未更新前查不到属正常。
**Q3:894-4 也有 2018 限制吗?**
A:894-4 按年查询,受同一上游数据覆盖范围约束,早年无数据。
**Q4:旧年份一定要用接口吗?**
A:不需要。2018 年前的历史回溯建议维护本地静态表,接口只覆盖 2018 起。
**Q5:数据什么时候最准?**
A:国务院文件发布后一周内接口即更新,之后全年稳定。
## 相关能力 / 下一步阅读
- [节假日查询:某天到底放不放假?894-6 单日判定接入指南](https://www.showapi.com/guides/holiday-query-day-check-894)
- [节假日查询:免费接口也要省调用,节假日数据缓存策略设计](https://www.showapi.com/guides/holiday-query-cache-894)
- [节假日查询返回字段全解:ret_code 与 type(1/2/3) 及三接入点结构一文读懂](https://www.showapi.com/guides/holiday-query-response-codes-894)
- **本系列共 12 篇**:查看[节假日查询指南总目录](https://www.showapi.com/guides/holiday-query-guides-894)