【发布时间】:2010-08-14 16:39:43
【问题描述】:
对你们来说有点谜。我可以想出直截了当的解决方法(如下),但我认为它会呈现给大家,看看是否有更优雅的解决方案。请记住,我正在寻找仅 PHP 或 MySql 的解决方案。
表格是'candles2'。我有一个 MySQL TEXT 列“时间”,其中有一个日期戳(例如 2010.08.13 19:30 )。请不要问为什么它是一个 TEXT 字段:)。我有第二个 TEXT 列“时间范围”,其中列出了时间的面额(例如“15m”、“30m”、“1h”、“4h”或“每日”)。 'id' 是主键。
我想将 'timeframe' 中的时间量添加到 'time' 中。
例如,如果 'time' == '2010.08.13 19:30' 和 'timeframe'==15m 那么它将用 '2010.08.13 19:45' 更新 'time' (注意增加了 15 分钟)。
这是我的想法:
//PHP查询数据库:
//using UNIX_TIMESTAMP to make the datetime usable by PHP
$sql = "SELECT UNIX_TIMESTAMP(time), timeframe, id FROM candles2";
$result = mysql_query($sql);
//loop through rows
while($row = mysql_fetch_array($result))
{
//call function to determine the appropriate # of seconds to add
$newTime = newTime($row['time'],$row['timeframe']);
//build UPDATE query and update row
$update_query = "UPDATE candles2 SET 'time'= FROM_UNIXTIME(" . $newTime . ") WHERE id='".$row['id']."'";
$update_result = mysql_query($update_query);
}
//PHP函数添加适当的秒数
function newTime($oldtime,$timeframe)
{
switch ($timeframe)
{
case "15m": return($oldtime + 15 * 60);
case "30m": return($oldtime + 30 * 60);
case "1h": return($oldtime + 60 * 60);
case "4h": return($oldtime + 240 * 60);
case "daily": return($oldtime + 1440 * 60);
default: die("whoops, something broke");
}
}
【问题讨论】: