如何在数据库中获取当前日期及Products表ExpDate往前30天的日期
产品表日期查询与计算实现
基础表信息
- 目标表:
Products - 表结构字段:
ProductID(产品唯一标识)、ProductName(产品名称)、ExpDate(产品过期日期) - 现有测试数据:
- 1001号产品:可口可乐,过期日期为2021-06-06
- 1002号产品:百事,过期日期为2021-05-08
需求实现
1. 获取数据库当前日期往前30天的日期
不同主流数据库的日期函数存在语法差异,对应查询语句为:
-- MySQL 版本 SELECT DATE_SUB(CURDATE(), INTERVAL 30 DAY) AS date_30d_prior_to_now; -- SQL Server 版本 SELECT DATEADD(DAY, -30, GETDATE()) AS date_30d_prior_to_now; -- PostgreSQL 版本 SELECT CURRENT_DATE - INTERVAL '30 days' AS date_30d_prior_to_now; -- Oracle 版本 SELECT SYSDATE - 30 AS date_30d_prior_to_now FROM DUAL;
2. 查询所有产品的过期日期,并计算每个产品过期日期往前30天的结果
直接关联表字段计算即可,对应查询语句可同时返回产品基础信息、原始过期日期、推算的预警日期:
-- MySQL 版本 SELECT ProductID, ProductName, ExpDate AS product_expire_date, DATE_SUB(ExpDate, INTERVAL 30 DAY) AS expire_alert_date FROM Products; -- 匹配示例数据的返回结果: -- 1001 可口可乐 2021-06-06 2021-05-05 -- 1002 百事 2021-05-08 2021-04-08 -- SQL Server 版本 SELECT ProductID, ProductName, ExpDate AS product_expire_date, DATEADD(DAY, -30, ExpDate) AS expire_alert_date FROM Products; -- PostgreSQL 版本 SELECT ProductID, ProductName, ExpDate AS product_expire_date, ExpDate - INTERVAL '30 days' AS expire_alert_date FROM Products; -- Oracle 版本 SELECT ProductID, ProductName, ExpDate AS product_expire_date, ExpDate - 30 AS expire_alert_date FROM Products;
验证:针对1001号产品的过期日期2021-06-06,推算往前30天的结果为2021-05-05,完全匹配需求示例的预期结果。
内容的提问来源于stack exchange,提问作者sim123
相关产品推荐
相关产品推荐

