我想在MySQL中插入时间并检索它然后与当前时间进行比较。
尽管有很多关于这个主题的问题,但经过几个小时的搜索后,大多数人只回答了mySQL查询或如何格式化时间戳。我的案子真的很难找到。但我猜我的问题不一样了。我甚至无法从检索到的数据开始。
我们的想法是,在发布数据时,它会使用last_update_time
检查数据库中的country_code
。如果last_update_time
在一小时内,它只会检索时间和其他数据。如果时差超过一小时,则更新DB中的行。
服务器位于远程站点,因此时区不同。并使用php 7和mySQL 5.7
在指定的时区中插入DB的时间很好,MySQL中的last_updated_time字段类型为DATETIME
。
function insertData($countryCode) {
// Create connection
$conn = new mysqli(DBHOST, DBUSER, DBPASSWORD, DBNAME);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
date_default_timezone_set('Asia/Seoul');
$currentTime = date("Y-m-d H:i:s");
$sql = "INSERT INTO my_table (country_code, last_updated_time)
VALUES ('$countryCode', '$currentTime')";
if (mysqli_query($conn, $sql)) {
echo "INSERT Succeeded";
}else {
echo "Failed INSERT";
}
$conn->close();
}
以后我需要将旧时间(保存时间)与页面刷新时的当前时间进行比较。我希望来自多个时区的人们设置date_default_timezone_set()
。
function compareTime($countryCode){
$conn = new mysqli(DBHOST, DBUSER, DBPASSWORD, DBNAME);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT last_updated_time FROM my_table WHERE country_code = '$countryCode'";
$savedTime = mysqli_query($conn, $sql);
if($savedTime->num_rows == 0) {
echo 'does not exist';
} else {
date_default_timezone_set('Asia/Seoul');
$currentTime = date("Y-m-d H:i:s");
$oldtime = strtotime($savedTime);
$timeDiffInSec = intval(strtotime($currentTime) - $oldtime) % 60;
$formattedOldTime = date("Y-m-d H:i:s",$oldtime);
echo '<p>Current Time: '.$currentTime.'</p>';
echo '<p>Old Time: '.$formattedOldTime.'</p>';
echo '<p>Time Difference: '.$timeDiffInSec.'</p>';
// Do the job only after 1 hour
if ($timeDiffInSec > 60 && $currentTime > $oldtime) {
// Do the job and update DB
}
}
$conn->close();
}
compareTime('us');
我遇到的问题是我不知道如何在PHP中正确地从mySQL中节省时间。我无法在网页上打印旧时间或比较这两次。
虽然当我通过myPhpAdmin查看时,保存的时间看起来像2017-12-26 17:07:37
,但这些echo
的打印方式如下所示。
Current Time: 2018-01-01 06:35:55
Old Time: 1970-01-01 09:00:00
Time Difference: 55
即使echo $savedTime;
也没有打印。我该如何解决这个问题?提前谢谢。
答案 0 :(得分:1)
$ savedTime是一个查询结果,您应该稍后获取结果。
试试这个:
statistics
顺便说一句,正如Funk Forty Niner在评论中提醒我的那样,你应该考虑使用prepared statements来避免SQL注入攻击。看看链接,它是值得的。