我正在尝试这个
SELECT DATEDIFF(second,log.start_time,log.end_time)
as seconds
from log
where log.log_id = "some crazy UUID";
但是我收到错误,因为DATEDIFF()
不接受像second这样的格式化程序expr。
所以我试过了,
SELECT second(DATEDIFF(second,log.start_time,log.end_time))
as seconds
from log
where log.log_id = "some crazy UUID";
但这对格式化也不起作用。
答案 0 :(得分:6)
我认为您打算使用TIMESTAMPDIFF()
代替DATEDIFF()
:
SELECT TIMESTAMPDIFF(second,log.start_time,log.end_time) as seconds
from log
where log.log_id = "some crazy UUID";
答案 1 :(得分:3)
试试这个
SELECT TIME_TO_SEC( TIMEDIFF( log.start_time, log.end_time )) AS seconds
FROM log
WHERE log.log_id = "some crazy UUID";
答案 2 :(得分:2)
DATEDIFF()
会返回差异天数。
使用TIMEDIFF()
或将两个时间戳都转换为TO_SECONDS()
)并获得它们的不同之处:
SELECT TO_SECONDS(log.end_time) - TO_SECONDS(log.start_time) AS seconds
FROM log
WHERE log.log_id = "some crazy UUID"
;
答案 3 :(得分:2)
DATEDIFF只接受两个参数,你在这里传递三个参数。
它是如何工作的,它也只返回不同时间的差异日期。
http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html
答案 4 :(得分:1)
DATEDIFF :
从msdn开始,它返回指定的startdate和enddate之间交叉的指定日期部分边界的计数(有符号整数)。 DATEDIFF()
函数返回两个日期之间的时间。
语法:
DATEDIFF ( datepart , startdate , enddate )
您应该使用TIMEDIFF()
或TIMESTAMPDIFF()
功能
只需将TIMESTAMPDIFF()
函数替换为DATEFDIFF()