相当于PHP格式('%R%a。%h');在MySQL中

时间:2016-02-16 00:57:04

标签: php mysql

mysql中这个php函数的等价物是什么:

$cba=date_diff($cb,$ca); $cba->format('%R%a.%h');

  

输出:日期:1.12 //即1天12小时

我将在哪里使用它:

DATEDIFF(q2.adate, q1.deact) AS ND,

我可以单独在mysql中执行相同的过程,谢谢

2 个答案:

答案 0 :(得分:3)

使用TIMEDIFF

尝试此操作
SELECT CONCAT(
   FLOOR(HOUR(TIMEDIFF(q2.adate, q1.deact)) / 24), ' days, ',
   MOD(HOUR(TIMEDIFF(q2.adate, q1.deact)), 24), ' hours, '
)
AS ND
  

MySQL TIMEDIFF()返回两个时间或日期时间之间的差异   表达式。需要注意的是,两个表达式必须相同   类型。

答案 1 :(得分:1)

来自MySQL文档:

  

DATEDIFF()将expr1 - expr2 表示为从一个日期到另一个日期的天数值。 expr1和expr2是日期或日期和时间表达式。 在计算中仅使用值的日期部分。

您可以改为使用TIMEDIFF

  

TIMEDIFF()返回expr1 - expr2 表示为时间值。 expr1和expr2是时间或日期和时间表达式,但必须属于同一类型。

因此TIMEDIFF的结果如下:

-00:00:00.000000  // Negative times
 00:00:00.000000  // Positive times

TIMESTAMPDIFF

  

TIMESTAMPDIFF()返回datetime_expr2 - datetime_expr1,其中datetime_expr1和datetime_expr2 是日期或日期时间表达式。一个表达式可以是日期,另一个表达式可以是日期时间;日期值被视为具有时间部分&00; 00:00:00'的日期时间。在必要时。 结果(整数)的单位由unit参数给出。单位的合法值与TIMESTAMPADD()函数说明中列出的值相同。

所以:

SELECT TIMESTAMPDIFF(MINUTE,'2003-02-01','2003-05-01 12:05:55');

将返回128885(分钟)。