Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php SQL,其中日期列至少比其他日期列大20天_Php_Sql_Sql Server - Fatal编程技术网

Php SQL,其中日期列至少比其他日期列大20天

Php SQL,其中日期列至少比其他日期列大20天,php,sql,sql-server,Php,Sql,Sql Server,我很难在表中找到两个日期列之间至少相差20天的行(不需要特定日期,只相差20天) 我尝试了这个,但没有成功: SELECT DocDate,DocDueDate,DocStatus FROM dbo.OPCH WHERE (DocDate - DocDueDate = 20) AND DocStatus = 'O' AND DocDate > '2014-01-01' 这不起作用。 如果您的日期实际声明为datetime,我们将不胜感激,您可以: SELECT DocDate,DocDu

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

我尝试了这个,但没有成功:

SELECT DocDate,DocDueDate,DocStatus
FROM dbo.OPCH
WHERE (DocDate - DocDueDate = 20) AND DocStatus = 'O' AND DocDate > '2014-01-01'
这不起作用。

如果您的日期实际声明为
datetime

,我们将不胜感激,您可以:

SELECT DocDate,DocDueDate,DocStatus
FROM dbo.OPCH
WHERE (DocDate >= DocDueDate + 20) AND DocStatus = 'O' AND DocDate > '2014-01-01';
WHERE datediff(day, DocDueDate, DocDate) >= 20 AND DocStatus = 'O' AND DocDate > '2014-01-01'
将数字添加到日期时间被解释为添加该天数。不幸的是,这不适用于
date

对于日期,您可以执行以下操作:

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

删除了mysql标记,因为语法是SQL Server。如果您至少需要20天,那么您不需要等号,您需要大于或等于号。