2017-07-07 342 views
-1

我有4列:开始日期,结束日期,开始时间和结束时间。我需要找到差异即结束时间开始时间。但是需要考虑开始日期和结束日期。例如:如果我的开始日期= 7/6/2017,开始时间= 1:00,结束日期是7/7/2017结束时间= 2:00,那么这个时间是25小时..计算日期之间的时间差

我需要做这适用于过去1周内的所有开始和结束日期。有人可以帮我弄这个吗。这将是非常有帮助的。

回答

0

使用UNIX_TIMESTAMP()STR_TO_DATE()将您的日期和时间转换为以秒为单位的Unix时间戳。例如:UNIX_TIMESTAMP(STR_TO_DATE("7/6/2017 1:00", '%d/%m/%Y %H:%i'))

https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_unix-timestamp

https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_str-to-date

然后在这两个时间戳进行基本的减法来获得秒的时间差距。另外,作为一般推荐,最好将日期转换为适当的MySQL Datetime列类型(更好的SQL支持),或者作为unix int timestamp(更快的差异),或者作为ISO格式的字符串,包括GMT数据(更好的人类可读性,可怕的查找)。

+0

这些是4个不同的列,日期列是日期格式,时间列是时间数据类型。它不是包含日期和时间的同一列。 – user3800888

+0

您可以使用'CONCAT()'创建一个单一的字符串。 – Fabien

+0

你能举个例子吗?所以你说我连接起始数据和开始时间,然后对结束日期和结束时间执行相同的操作,然后使用timestampdiff? – user3800888