我在数据库中保存了两次
DayTime1 = "Wed 09:00"
DayTime2 = "Wed 13:00"
我希望在几分钟内得出这两个日期之间的差异。
TIMESTAMPDIFF(MINUTES,DayTime1,DayTime2) return null
我无法通过它。有什么方法可以改变吗?
答案 0 :(得分:2)
由于您还包含了php
- 标记,我假设PHP解决方案也是有效的:
$daytime1 = "Wed 09:00";
$daytime2 = "Wed 13:00";
$diff = abs(strtotime($daytime1) - strtotime($daytime2)); //absolute diff in seconds
$diff = $diff / 60; //Difference in minutes
修改强>
这是一个纯粹的MySQL解决方案:
SELECT ABS(
TIME_TO_SEC(
TIMEDIFF(
STR_TO_DATE("Wed 09:00", "%a %H:%i"),
STR_TO_DATE("Wed 13:00", "%a %H:%i")
)
)
) / 60
第二个参数"%a %H:%i"
是日期格式。如果它的格式始终为"工作日的前三个字母,空格,带前导零的小时,:
,分钟"那么你可以使用这种格式。
答案 1 :(得分:2)
请注意,SELECT STR_TO_DATE("Wed 09:00", "%a %H:%i")
会返回 0000-00-00
09:00:00
(至少在我的本地MySql 5.5.16上)。因此,如果比较不同的日期,您将无法获得正确的结果。
如果给出一年和一周,日期名称将被解释为实际日期,因此比较也可能跨越几天。例如(虽然不是很优雅,但我承认):
SELECT TIMESTAMPDIFF(MINUTE,
STR_TO_DATE(CONCAT(YEAR(CURDATE()), WEEKOFYEAR(CURDATE()), ' Tue 09:00'), '%x%v %a %H:%i'),
STR_TO_DATE(CONCAT(YEAR(CURDATE()), WEEKOFYEAR(CURDATE()), ' Wed 13:00'), '%x%v %a %H:%i')
)