Немного загадки для вас, ребята. Я могу придумать тупой обход (ниже), но я подумал, что он представит его всем вам, чтобы увидеть, было ли там более элегантное решение. Имейте в виду, что я ищу решение только для PHP или MySql.MySQL добавить время в колонку
Таблицы - это «свечи2». У меня есть столбец MySQL TEXT «время», в котором есть datestamp (например, 2010.08.13 19:30). Пожалуйста, не спрашивайте, почему это поле TEXT :). У меня есть второй столбец «ТЕКСТ» «таймфрейм», в котором указывается номинал времени (например, «15 м», «30 м», «1 ч», «4 часа» или «ежедневно»). «id» - первичный ключ.
Я хочу добавить количество времени в «таймфрейме» на «время».
Так, например, если «время» == '2010.08.13 19:30' и 'timeframe' == 15m, то оно обновит «время» на «2010.08.13 19:45» (обратите внимание на добавление 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");
}
}