Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.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 仅当天数相同时,才能获得月差_Php_Mysql_Date_Pdo_Timestamp - Fatal编程技术网

Php 仅当天数相同时,才能获得月差

Php 仅当天数相同时,才能获得月差,php,mysql,date,pdo,timestamp,Php,Mysql,Date,Pdo,Timestamp,在MySQL中,只有在日期相同的情况下,如何才能获得两个日期之间的月差?到目前为止,我已经做到了这一点,但它不起作用,因为当日子不一样时,它仍然起作用: TIMESTAMPDIFF(MONTH, '2019-05-05', '2019-06-05') Output: 1 TIMESTAMPDIFF(MONTH, '2019-05-05', '2019-06-22') Output: 1 // should NOT work because days are 05 and 22. Needs t

在MySQL中,只有在日期相同的情况下,如何才能获得两个日期之间的月差?到目前为止,我已经做到了这一点,但它不起作用,因为当日子不一样时,它仍然起作用:

TIMESTAMPDIFF(MONTH, '2019-05-05', '2019-06-05')
Output: 1

TIMESTAMPDIFF(MONTH, '2019-05-05', '2019-06-22')
Output: 1 // should NOT work because days are 05 and 22. Needs to be the same dates
我显然可以做到:

DAY('2019-05-05') = DAY('2019-06-05') AND TIMESTAMPDIFF(MONTH, '2019-05-05', '2019-06-05')
但是我如何在一个函数中实现它呢


谢谢

在MySQL中,您可以使用下面的查询获得它

 select DATEDIFF('2019-06-22', '2019-05-05') as Diff from table_name where 
    day('2019-06-22') == day('2019-05-05');
正在使用列名

 select DATEDIFF(dateColum2, dateColum1) as Diff from table_name where 
    day(dateColum2) == day(dateColum1);
从PHP你可以得到如下所示

$dateValue1 = '2019-05-05';
    $dateValue2 =  '2019-06-22';
    $time1=strtotime($dateValue1);
    $day1=date("D",$time1);

    $time2=strtotime($dateValue2);
    $day2=date("D",$time2);

    if($day1 == $day2 ) {
    $seconds_diff = $time2 - $time;
    }

在MySQL中,您可以使用下面的查询获得它

 select DATEDIFF('2019-06-22', '2019-05-05') as Diff from table_name where 
    day('2019-06-22') == day('2019-05-05');
正在使用列名

 select DATEDIFF(dateColum2, dateColum1) as Diff from table_name where 
    day(dateColum2) == day(dateColum1);
从PHP你可以得到如下所示

$dateValue1 = '2019-05-05';
    $dateValue2 =  '2019-06-22';
    $time1=strtotime($dateValue1);
    $day1=date("D",$time1);

    $time2=strtotime($dateValue2);
    $day2=date("D",$time2);

    if($day1 == $day2 ) {
    $seconds_diff = $time2 - $time;
    }
/ADDDATE//DATE\u ADD将很好地处理此问题:

SELECT DATE_SUB('2019-06-22', INTERVAL 1 MONTH) = '2019-05-05'

| DATE_SUB('2019-06-22', INTERVAL 1 MONTH) = '2019-05-05' |
| ------------------------------------------------------: |
|                                                       0 |
请参阅

/ADDDATE//DATE\u ADD将很好地处理此问题:

SELECT DATE_SUB('2019-06-22', INTERVAL 1 MONTH) = '2019-05-05'

| DATE_SUB('2019-06-22', INTERVAL 1 MONTH) = '2019-05-05' |
| ------------------------------------------------------: |
|                                                       0 |

请参见

您可以分解日期字符串并比较日期/您可以分解日期字符串并比较日期/@timmy balk只有在间隔固定的情况下才有效。。。因此,如果您想要两个日期列之间的日期差,您必须像我在下面所做的那样使用多个函数。。。我知道你想避免它,但现在没有更多的选择了MySQL@timmy阻止它只有在间隔固定的情况下才有效。。。因此,如果您想要两个日期列之间的日期差,您必须像我在下面所做的那样使用多个函数。。。我知道你想避免它,但在MySQL中没有更多的选择