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

SQL技术问询:如何筛选scheduled_sales_date中日≥25的记录?

筛选日期日部分≥25的数据记录

原始数据表

reporting_month scheduled_sales_date
202212          20230117
202212          20230106
202212          20230125
202212          20230130
202212          20230101
202212          20230129
202212          20230114
202212          20230122
202212          20230129

预期筛选结果

reporting_month scheduled_sales_date
202212          20230125
202212          20230130
202212          20230129
202212          20230129

实现方案

根据你使用的数据库,选择对应的SQL语句:

方法1:直接提取日期数字的最后两位(通用高效)

如果scheduled_sales_date是数字类型(INT/BIGINT),可以通过取模或字符串截取快速拿到日部分:

-- 取模法(仅适用于数字类型)
SELECT reporting_month, scheduled_sales_date
FROM your_table_name
WHERE MOD(scheduled_sales_date, 100) >= 25;

-- 字符串截取法(数字/字符串类型通用)
SELECT reporting_month, scheduled_sales_date
FROM your_table_name
WHERE RIGHT(CAST(scheduled_sales_date AS CHAR), 2) >= '25';

方法2:转成日期类型后提取日(严谨规范)

把数字格式的日期转为标准日期类型,再用数据库自带函数提取日部分,能自动校验日期合法性:

  • MySQL
SELECT reporting_month, scheduled_sales_date
FROM your_table_name
WHERE DAY(STR_TO_DATE(scheduled_sales_date, '%Y%m%d')) >= 25;
  • SQL Server
SELECT reporting_month, scheduled_sales_date
FROM your_table_name
WHERE DAY(CAST(CONVERT(varchar(8), scheduled_sales_date) AS DATE)) >= 25;
  • PostgreSQL
SELECT reporting_month, scheduled_sales_date
FROM your_table_name
WHERE EXTRACT(DAY FROM TO_DATE(scheduled_sales_date::TEXT, 'YYYYMMDD')) >= 25;

补充说明

  • 方法1无需类型转换,性能更好,适合数据量大的场景;
  • 方法2能过滤无效日期(比如20230230这类非法值),数据严谨性更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 04:32:49