SQL where 日期列比另一个日期列大至少 20 天

Posted

技术标签:

【中文标题】SQL where 日期列比另一个日期列大至少 20 天【英文标题】:SQL where date column bigger than other date column by atleast 20 days 【发布时间】:2014-03-30 14:04:46 【问题描述】:

我很难在我的表格中找到两个日期列之间至少相差 20 天的行(不需要具体日期,仅相差 20 天)

我试过这个没有运气:

SELECT DocDate,DocDueDate,DocStatus
FROM dbo.OPCH
WHERE (DocDate - DocDueDate = 20) AND DocStatus = 'O' AND DocDate > '2014-01-01'

这不起作用。 任何帮助将不胜感激

【问题讨论】:

删除了 mysql 标签,因为语法是 SQL Server。 如果你想要至少 20 天,那么你不想要一个等号,你想要一个大于或等于号。 【参考方案1】:

如果您的日期实际上声明为datetime,您可以这样做:

SELECT DocDate,DocDueDate,DocStatus
FROM dbo.OPCH
WHERE (DocDate >= DocDueDate + 20) AND DocStatus = 'O' AND DocDate > '2014-01-01';

将数字添加到日期时间被解释为添加该天数。不幸的是,这不适用于date

对于date,你可以这样做:

WHERE datediff(day, DocDueDate, DocDate) >= 20 AND DocStatus = 'O' AND DocDate > '2014-01-01'

【讨论】:

以上是关于SQL where 日期列比另一个日期列大至少 20 天的主要内容,如果未能解决你的问题,请参考以下文章

WHERE 日期范围内多列中的至少一列

SQL在where子句中转换日期格式

SQL - SELECT WHERE 存储在 JSON varchar 中的日期大于或小于固定日期

SQL / Postgres join where子句

SQL在where语句中使用日期范围的选择子查询来确定该日期范围内的最大值

带有两个日期列的 sql 查询“where 子句”