作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在寻找实现此目的的方法,但发现的信息非常有限。
我有一个 MySQL 表“msgdb”,其中包含格式为 double(25,8) 的字段“ttime”(示例行 = 1352899856.95249200)。
我需要定期清理表,方法是删除字段“ttime”<= 今天的日期 -5 天的所有行。
这是我能找到的与 double 到时间转换相关的唯一两行代码,但两者都无法工作。
SELECT ADDDATE(ADDDATE(ADDDATE('1899-12-31 00:00:00',FLOOR(ttime)), INTERVAL -1 DAY),INTERVAL(MOD(ttime,1)*86400)SECOND) AS TrueDate FROM msgdb
select date('1899-12-31 00:00:00'+ INTERVAL ttime * 24*3600 SECOND) as date from msgdb
在开始使用 DELETE FROM 之前,我首先尝试使用下面的代码显示与条件匹配的任何行,以确保获得正确的结果。
$query = "select date('1899-12-31 00:00:00'+ INTERVAL ttime * 24*3600 SECOND) as date from msgdb";
$result = mysql_db_query ($dbname, $query, $link);
while($row = mysql_fetch_array($result)) {
echo $row['date'];
echo '<br>';
}
还有
$query = "SELECT ADDDATE(ADDDATE(ADDDATE('1899-12-31 00:00:00',FLOOR(ttime)), INTERVAL -1 DAY),INTERVAL(MOD(ttime,1)*86400)SECOND) AS TrueDate FROM msgdb";
$result = mysql_db_query ($dbname, $query, $link);
while($row = mysql_fetch_array($result)) {
echo $row['TrueDate'];
echo '<br>';
}
但两者都没有返回任何内容。
更新:好的,使用以下代码:
$query = "select ttime from msgdb";
$result = mysql_db_query ($dbname, $query, $link);
while($row = mysql_fetch_array($result)) {
echo date('m-j-Y, H:i:s', $row[0]);
echo '<br>';
}
我可以看到它将“ttime”字段从存储值 1352899856.95249200 转换为 11-14-2012, 07:30:56。
那么我如何从表中删除 ttime <=now - 5 天的所有行?
最佳答案
找出哪些记录的日期早于某个时间点应该很容易:
DELETE FROM table WHERE ttime <= DATE_SUB(NOW(), INTERVAL 5 DAY);
如果您将所有时间存储在 UTC 中,那么使用 UTC_TIMESTAMP()
可能会更好,这是唯一明智的方法。
关于php - MySQL 双日期转换时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13391714/
我是一名优秀的程序员,十分优秀!