mysql的timediff到几个小时
我试图从我的桌子上得到timediff,并将其转换为小时(这是一个小时计费服务)
SELECT TIME_TO_SEC(TIMEDIFF(endDate,startDate))/ 3600 FROM tasks>
其中endDate和startDate是date时间格式
有没有另一种方式(更有效率)做这个任务? 谢谢 !
TIMEDIFF(endDate, startDate)
以DateTime格式输出,如此平坦,以时间戳和(60 * 60)
SELECT (UNIX_TIMESTAMP(TIMEDIFF(endDate, startDate))/(60*60)) AS hours_difference FROM tasks
编辑:或者, TimestampDiff也可以提供一个有效的解决scheme,以更优雅的方式提供其示例:
SELECT TIMESTAMPDIFF(MONTH,'2003-02-01','2003-05-01');
而你的解决scheme可以是:
SELECT TIMESTAMPDIFF(HOUR, endDate, startDate) AS hours_different FROM tasks
注意在这条链上最投票的答案是不正确的! 使用小时只能以整数forms返回小时。 下面将更正最stream行的回答小时为整数和分钟(即6.5小时)。
TIME_TO_SEC(TIMEDIFF(endDate, startDate))/3600 as hours
HOUR(TIMEDIFF(endDate, startDate))
可能工作 – 如果我正确地阅读文档。
TIMESTAMPDIFF(HOUR, startDate, endDate)
是最好的办法,因为它工作的时间间隔很大,比如
TIMESTAMPDIFF(HOUR, "2012-01-01 00:00:00", "2050-01-01 00:00:00")
结果: 333120
而
HOUR(TIMEDIFF("2050-01-01 00:00:00", "2012-01-01 00:00:00"))
结果: 838
失败。
正如我们在上面的例子中看到的,令人惊讶的是甚至超过了2038年的时间戳限制。
HOUR(TIMEDIFF(dateEnd, dateStart))
返回的最大小时数为838,因为TIMEDIFF
限制在TIME
值允许的范围内。
在小时内获得差异:
Hour(TIMEDIFF(date1,date2)) as Hour1
为了得到差异:
Minute(TIMEDIFF(date1,date2)) as Minute1
为了获得第二个差异:
Second(TIMEDIFF(date1,date2)) as Second1
例如:startDate 2010-01-31 00:00:00,endDate 2010-01-31 19:24:22
SELECT (UNIX_TIMESTAMP(dateFin)-UNIX_TIMESTAMP(dateDebut))/3600 hour_diff FROM tasks SELECT TIME_TO_SEC(TIMEDIFF(endDate,startDate))/3600 FROM tasks
回报19.4061这是很好的
SELECT TIMESTAMPDIFF(HOUR, endDate, startDate) AS hours_different FROM tasks
只返回小时,而我也需要分钟转换。
SELECT (UNIX_TIMESTAMP(TIMEDIFF(endDate, startDate))/(60*60)) AS hours_difference FROM tasks
返回0.我认为第一个是最有效的。 谢谢 !!
您可以使用UNIX_TIMESTAMP在SELECT查询中进行计算。
SELECT (UNIX_TIMESTAMP(endDate)-UNIX_TIMESTAMP(startDate))/3600 hour_diff FROM tasks
UNIX_TIMESTAMP将date时间转换为从纪元开始的秒数。 你可以减去两个时间戳,以获得差异。 将其与3600分开会在一小时内给你带来不同。
TIMEDIFF(endDate, startDate) / 10000
select hour(timediff('2017-01-01 00:00:00', '2017-01-01 00:01:00')); return 1 select hour(timediff('2017-01-01 00:01:00', '2017-01-01 00:00:00')); return 1 select time_to_sec(timediff('2017-01-01 00:00:00', '2017-01-01 00:00:05')); return -5 select time_to_sec(timediff('2017-01-01 00:00:00', '2017-01-01 00:00:05'))/60 as 'minutes' ; return -0.0833
如果你有秒,你可以将其转换为你想要的或什么和小时(..)将不会使用它时,我比较,因为它总是正面的价值