我有一个查询从两个表中提取结果。日期时间存储在一个表中,时间偏移以分钟为单位(-300)在第二个表中。是否可以检索已经偏移的本地时间,还是需要使用PHP进行计算?
SELECT
t1.eventName,
t1.eventTime,
t2.offsetTime
WHERE id = 2
活动时间按以下格式存储: 2015-11-05 02:04:01 和偏移时间: -360
如果我使用MySQL路由,是否需要先将它们转换为毫秒?
答案 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
,您可以使用DAY
,HOUR
,MONTH
,SECOND
等。