如何用Strapi REST API筛选今日日期在start_date与end_date间的实体
实现今日日期落在start_date与end_date之间的实体筛选
核心逻辑很明确:只要确保今日日期大于等于start_date,同时小于等于end_date即可。下面分不同数据库给出具体查询语句,同时补充字符串日期字段的兼容写法:
各数据库原生写法(推荐,日期字段为DATE/DATETIME类型)
MySQL/MariaDB
用CURDATE()直接获取今日日期(不含时间部分):
SELECT * FROM 你的实体表名 WHERE start_date <= CURDATE() AND end_date >= CURDATE();
PostgreSQL
用CURRENT_DATE获取今日日期:
SELECT * FROM 你的实体表名 WHERE start_date <= CURRENT_DATE AND end_date >= CURRENT_DATE;
SQL Server
通过CAST(GETDATE() AS DATE)提取今日的日期部分(去掉时分秒):
SELECT * FROM 你的实体表名 WHERE start_date <= CAST(GETDATE() AS DATE) AND end_date >= CAST(GETDATE() AS DATE);
通用字符串日期兼容写法(日期字段为YYYY-MM-DD格式的字符串)
如果你的日期字段是字符串类型且严格遵循YYYY-MM-DD格式,直接用字符串比较即可(因为该格式的字典序和日期顺序一致):
SELECT * FROM 你的实体表名 WHERE start_date <= '2024-05-20' -- 这里替换为今日的YYYY-MM-DD格式字符串 AND end_date >= '2024-05-20';
注意:建议在应用层动态生成今日的日期字符串,避免硬编码。
额外注意事项
- 优先使用数据库原生的日期类型存储日期,比字符串类型查询效率更高,还能避免格式不规范的问题。
- 如果涉及跨时区场景,建议统一使用UTC日期进行存储和查询,避免时区转换导致的筛选错误。
内容的提问来源于stack exchange,提问作者Mike
相关产品推荐
相关产品推荐

