gpt4 book ai didi

php - MySQL将时间添加到列

转载 作者:行者123 更新时间:2023-11-29 03:14:13 25 4
gpt4 key购买 nike

你们有点困惑。我可以想出直截了当的解决方法(如下),但我认为它会向大家展示,看看是否有更优雅的解决方案。请记住,我正在寻找仅适用于 PHP 或 MySql 的解决方案。

表格是“candles2”。我有一个 MySQL TEXT 列“时间”,其中有一个日期戳(例如 2010.08.13 19:30)。请不要问为什么它是 TEXT 字段 :)。我有第二个 TEXT 列“timeframe”,其中列出了时间单位(例如“15m”、“30m”、“1h”、“4h”或“daily”)。 'id' 是主键。

我想将 'timeframe' 中的时间量添加到 'time'。

例如,如果 'time' == '2010.08.13 19:30' 和 'timeframe'==15m 那么它将更新 'time' 为 '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");
}
}

最佳答案

为什么不使用 MySQL 的 STR_TO_DATE()将您的文本值转换为日期时间值,然后使用 DATE_ADD()添加间隔?将您的时间范围转换为 MySQL 期望的间隔格式应该相当容易(例如 INTERVAL 30 MINUTE)。然后您可以使用 DATE_FORMAT()将其恢复为文本形式。

关于php - MySQL将时间添加到列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3484209/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com