计算MySQL中两个日期(String格式)之间的差异

时间:2017-01-20 09:09:41

标签: php mysql sql database mysqli

我的客户端将MySQL中页面的访问时间存储为varchar。他从JS获取日期类new date()的对象,其格式为

  

2016年11月25日星期五12:09:34 GMT + 0530(印度标准时间)

我想计算2个变量的时差,如上所示。它用于分析目的,在页面中花费的时间。

我已经尝试过了:

SELECT TIMESTAMPDIFF(SECOND, 'Fri Nov 25 2016 12:09:34 GMT+0530 (India Standard Time)', 
'Fri Nov 25 2016 12:20:34 GMT+0530 (India Standard Time)')

我该怎么做?

3 个答案:

答案 0 :(得分:2)

你真的使用mysql Date类型。 (编辑:刚刚在评论中看到你为什么要使用varchar,所以让我们跳过它;))

无论如何,您可以尝试使用STR_TO_DATE()函数

将字符串转换为日期
SELECT TIMESTAMPDIFF(
    SECOND,
    STR_TO_DATE('Fri Nov 25 2016 12:09:34 GMT+0530 (India Standard Time)', '%a %b %d %Y %T'),
    STR_TO_DATE('Fri Nov 25 2016 12:20:34 GMT+0530 (India Standard Time)', '%a %b %d %Y %T')
)

答案 1 :(得分:0)

试试这个:

SELECT TIMEDIFF('Nov 25 2016 12:09:34','Fri Nov 25 2016 12:20:34') as diff;

答案 2 :(得分:0)

$dat1 = "Fri Nov 26 2016 12:09:34 GMT+0530";
$dat2 = "Fri Nov 25 2016 12:20:34 GMT+0530";

$diff = abs(strtotime($dat2) - strtotime($dat1));

$years = floor($diff / (365*60*60*24));
$months = floor(($diff - $years * 365*60*60*24) / (30*60*60*24));
$days = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24));

printf("%d years, %d months, %d days\n", $years, $months, $days);