Un peu d'un puzzle pour vous les gars. Je peux trouver une solution contondante (ci-dessous), mais je pensais que cela vous présenterait à tous pour voir s'il y avait une solution plus élégante là-bas. Gardez à l'esprit que je suis à la recherche d'une solution PHP ou MySql seulement.MySQL ajouter du temps à la colonne
Les tables sont des 'bougies2'. J'ai une colonne de temps de MySQL TEXT qui a un datestamp dedans (par exemple 2010.08.13 19:30). S'il vous plaît ne demandez pas pourquoi c'est un champ de texte :). J'ai une deuxième colonne TEXT 'timeframe' qui liste une dénomination de temps (par exemple '15m', '30m', '1h', '4h' ou 'daily'). 'id' est la clé primaire.
Je souhaite ajouter la durée dans 'timeframe' à 'time'. Ainsi par exemple si 'time' == '2010.08.13 19:30' et 'timeframe' == 15m alors il mettrait à jour 'time' avec '2010.08.13 19:45' (notez l'ajout de 15 minutes) minutes).
Voici ce que je pensais:
// PHP interroger la base de données:
//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);
}
// Fonction PHP pour ajouter secondes appropriées
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");
}
}