Php Datediff函数()给了我错误的答案
我使用selectdatediffdd、$StartDate、$Today来计算两个日期之间的天数$$起始日期为2020-11-19,$Today是当前日期$Today=dateY-m-d;。我得到28天的天数,这是不正确的。我做错了什么?要回答为什么值是错的这个实际问题,是因为它不是错的;28对于您传递的值是正确的。问题是你没有参数化。DATEDIFF实际上工作完全正确。您正在执行的操作如下: 选择DATEDIFFDD,2020-11-19,2021-02-01; 返回28。这是正确的。您拥有的也是以下表达式的同义词:Php Datediff函数()给了我错误的答案,php,sql-server,Php,Sql Server,我使用selectdatediffdd、$StartDate、$Today来计算两个日期之间的天数$$起始日期为2020-11-19,$Today是当前日期$Today=dateY-m-d;。我得到28天的天数,这是不正确的。我做错了什么?要回答为什么值是错的这个实际问题,是因为它不是错的;28对于您传递的值是正确的。问题是你没有参数化。DATEDIFF实际上工作完全正确。您正在执行的操作如下: 选择DATEDIFFDD,2020-11-19,2021-02-01; 返回28。这是正确的。您拥有
SELECT DATEDIFF(DD,1990,2018);
SELECT DATEDIFF(DD,'19050614','19070712');
--and even
SELECT 2018 - 1990;
因为没有正确地参数化和注入,所以传递的值不是日期时间值,而是int的表达式。参数化您的查询,并传递一个日期和时间日期类型值,SQL就可以正常工作。例如:
-这不会出现在您的SQL中,但是当从应用程序传递参数时,会出现一些等价的情况
声明@StartDate date='20201119',
@今日日期='20210201';
-和DATEDIFF函数
选择DATEDIFFDAY、@StartDate、@Today;
这还返回表达式的正确值,但也返回您可能期望的值74。要回答为什么值错误的实际问题,是因为它不是;28对于您传递的值是正确的。问题是你没有参数化。DATEDIFF实际上工作完全正确。您正在执行的操作如下: 选择DATEDIFFDD,2020-11-19,2021-02-01; 返回28。这是正确的。您拥有的也是以下表达式的同义词:
SELECT DATEDIFF(DD,1990,2018);
SELECT DATEDIFF(DD,'19050614','19070712');
--and even
SELECT 2018 - 1990;
因为没有正确地参数化和注入,所以传递的值不是日期时间值,而是int的表达式。参数化您的查询,并传递一个日期和时间日期类型值,SQL就可以正常工作。例如:
-这不会出现在您的SQL中,但是当从应用程序传递参数时,会出现一些等价的情况
声明@StartDate date='20201119',
@今日日期='20210201';
-和DATEDIFF函数
选择DATEDIFFDAY、@StartDate、@Today;
这还返回表达式的正确值,但也返回您可能期望的值74。是否需要sql server?或者谢谢。3v4l.org/GvA5c有效您需要sql server吗?或者谢谢。3v4l.org/GvA5c