仅当日期相同时才获得月份差异

时间:2019-02-26 05:54:27

标签: 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 to be the same dates

我显然可以做到:

DAY('2019-05-05') = DAY('2019-06-05') AND TIMESTAMPDIFF(MONTH, '2019-05-05', '2019-06-05')

但是我该如何在一个功能中做到这一点?

谢谢!

2 个答案:

答案 0 :(得分:4)

SUBDATE() / GET / DATE_SUB / x = [[1,3],[3,4,7,9],[4,7],[2,4,5,3],[5,7,4]] dic = {f"{len(i)}_elelment": [] for i in x} for i in x: dic[f"{len(i)}_elelment"].append(i) # {'2_elelment': [[1, 3], [4, 7]], # '4_elelment': [[3, 4, 7, 9], [2, 4, 5, 3]], # '3_elelment': [[5, 7, 4]]} 可以很好地解决此问题:

ADDDATE

DATE_ADD

请参见DBfiddle

答案 1 :(得分:2)

在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;
    }