我有一个称为温度的MySQL表
我的一个属性称为“现在” 它显示了服务器上的时间戳。
模式:
now (current_time), id (auto increment), temp (varchar 50)
现在属性的示例
2018-06-07 11:19:46
2018-06-08 02:06:12
我无权更改服务器上的时间。
在阅读now值之后,如何添加5.5小时到现在?
我当前要阅读的代码
$sql = "SELECT id, now, temp FROM temperature";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo "id: " . $row["id"]. " - Time: " . $row["now"]. " . - Temperature: ". $row["temp"]. "<br>";
}
} else {
echo "no data";
}
这可能吗?我可以在回声之前增加5.5小时吗?
答案 0 :(得分:1)
您可以在查询中使用MYSQL的ADDTIME函数。
SELECT id, ADDTIME(now, "5:30:0") AS now_added FROM temprature;
答案 1 :(得分:-1)
您的问题似乎涉及Indian national time zone (+5:30)。 zoneinfo database中的时区名称为Asia/Kolkata
。
我从您的问题中猜测,您正在尝试将时间从U niversal Time Coordinated (UTC)转换为印度时间。
重要的是,您的now
属性是作为DATETIME
还是TIMESTAMP
列存储在表中。您的问题显示的信息不足以使我们知道;两种数据类型均使用2018-07-08 13:31:20
之类的文本字符串呈现。
如果您的now
属性是TIMESTAMP
,则情况很好。为什么? MySQL根据世界标准时间存储TIMESTAMP
值。因此,您所需要做的就是设置MySQL连接的时区,然后通过分别调用query()
方法并依次运行这两个查询来进行选择查询。
SET time_zone = 'Asia/Kolkata';
SELECT id, now, temp FROM temperature;
MySQL会将您的now
值转换为印度时间。
如果您的now
列具有DATETIME
数据类型,则意味着存储表中的数据时不参考任何时区。在这种情况下,您可以使用此查询将这些值从UTC转换为印度时间。
SELECT id, CONVERT_TZ(now,'UTC','Asia/Kolkata') AS now, temp FROM temperature
为了使用MySQL的时区支持,您可能需要填充服务器的时区表。告诉您的服务器管理员执行此操作,或查看此页面上的说明。 https://dev.mysql.com/doc/refman/5.7/en/time-zone-support.html
答案 2 :(得分:-3)
使用函数strtotime和date查看此示例代码 只需在回显之前添加 示例:
$selectedTime = $row['now'];
$endTime = date("H:i:s" ,strtotime("+5 hours 50 minutes", strtotime($selectedTime)));
echo $endTime;