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

如何在SQL中筛选日期差大于10天的数据并添加列?

修复查询语句 + 添加列的解决方案

让我来帮你搞定这两个问题,一步步拆解:

一、修复日期筛选的查询语句

你的原查询没生效,核心问题是日期差值的计算方式错误,而且没考虑Date2为Null的情况,我整理了常见数据库的正确写法:

问题分析

  • date(Date2-Date1)这种写法无法得到两个日期的天数差,不同数据库有专门的日期差函数或计算逻辑;
  • 当Date2为Null时,差值计算结果也是Null,不会满足>10的条件,显式加上Date2 IS NOT NULL会更严谨;
  • date(Date1)>'2017-05-01'可以简化为Date1 > '2017-05-01',日期类型直接和标准格式的字符串比较即可。

正确查询语句

MySQL

SELECT ID 
FROM table_1 
WHERE DATEDIFF(Date2, Date1) > 10 
  AND Date1 > '2017-05-01'
  AND Date2 IS NOT NULL;

SQL Server

SELECT ID 
FROM table_1 
WHERE DATEDIFF(day, Date1, Date2) > 10 
  AND Date1 > '2017-05-01'
  AND Date2 IS NOT NULL;

Oracle

SELECT ID 
FROM table_1 
WHERE (Date2 - Date1) > 10 
  AND Date1 > TO_DATE('2017-05-01', 'YYYY-MM-DD')
  AND Date2 IS NOT NULL;

二、给表添加新列的方法

用ALTER TABLE语句就能完成,你可以根据需求指定列的类型、是否允许Null、默认值等,以下是常见场景的写法:

基础添加(允许Null)

MySQL/SQL Server

ALTER TABLE table_1 ADD COLUMN new_column INT; -- 替换INT为你需要的类型,比如VARCHAR(50)、DATE等

Oracle

ALTER TABLE table_1 ADD new_column INT;

添加带默认值且不允许Null的列

MySQL/SQL Server

ALTER TABLE table_1 ADD COLUMN new_column VARCHAR(50) NOT NULL DEFAULT '默认值';

Oracle

ALTER TABLE table_1 ADD new_column VARCHAR2(50) DEFAULT '默认值' NOT NULL;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:54:22