我的客户端将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)')
我该怎么做?
答案 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);