2

我正在尝试这个

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";

但这也不适用于格式化。

4

5 回答 5

6

我认为您打算使用TIMESTAMPDIFF()而不是DATEDIFF()

SELECT TIMESTAMPDIFF(second,log.start_time,log.end_time) as seconds 
from log 
where log.log_id = "some crazy UUID";
于 2011-03-16T16:02:33.753 回答
3

尝试这个

SELECT TIME_TO_SEC( TIMEDIFF( log.start_time, log.end_time )) AS seconds
FROM log 
WHERE log.log_id = "some crazy UUID";
于 2011-03-16T15:58:19.643 回答
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"
;
于 2011-03-16T15:58:52.933 回答
2

DATEDIFF 只接受两个参数,而您在此处传递三个参数。

它是如何工作的,并且它只返回不包括时间的黑白日期差异。

http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html

于 2011-03-16T15:59:13.727 回答
1

日期

msdn中,它返回在指定开始日期和结束日期之间交叉的指定日期部分边界的计数(有符号整数)。该DATEDIFF()函数返回两个日期之间的时间。句法 :

DATEDIFF ( datepart , startdate , enddate )  

您应该使用TIMEDIFF()TIMESTAMPDIFF()发挥作用。
只需将TIMESTAMPDIFF()功能替换为DATEFDIFF()

于 2011-03-16T16:12:32.960 回答