MySQL

时间:2015-11-05 03:01:05

标签: php mysql

我有一个查询从两个表中提取结果。日期时间存储在一个表中,时间偏移以分钟为单位(-300)在第二个表中。是否可以检索已经偏移的本地时间,还是需要使用PHP进行计算?

SELECT
   t1.eventName, 
   t1.eventTime, 
   t2.offsetTime
WHERE id = 2

活动时间按以下格式存储: 2015-11-05 02:04:01 和偏移时间: -360

如果我使用MySQL路由,是否需要先将它们转换为毫秒?

2 个答案:

答案 0 :(得分:2)

您可以使用a load of different functions来实现此目标,例如SUBTIME& ADDTIME

在你的情况下,它可能类似*:

SELECT ADDTIME(t1.eventTime, t2.offsetTime) as newTime

*您可能需要使用其他功能将-300转换为-00:05等格式。

答案 1 :(得分:1)

是的,可以在MySQL表达中进行计算。

如果t2.offsetTime是表示分钟数的整数数据类型,t1.eventTime是DATETIME,TIMESTAMP或DATE的数据类型...您可以使用表达式将偏移量(以分钟为单位)添加到日期时间。

例如:

  t1.eventTime + INTERVAL t2.offsetTime MINUTE

只需在SELECT列表中使用该表达式,例如:

SELECT t1.eventName
     , t1.eventTime + INTERVAL t2.offsetTime MINUTE AS offsetEventTime
     , t1.eventTime
     , t2.offsetTime
  FROM t1
  JOIN t2
    ON ... 

如果您更喜欢在表达式中使用函数,MySQL提供DATE_ADD函数,它执行相同的操作......

 DATE_ADD(t1.eventTime, INTERVAL t2.offsetTime MINUTE)

(代替MINUTE,您可以使用DAYHOURMONTHSECOND等。