问题已解决
解答:
delete from `[table name]` where [row name] > AddTime( CurTime(), '14400 hour' )
这会立即删除任何超过10天OLD的内容。
答案 0 :(得分:2)
首先在STR_TO_DATE
它采用字符串str和格式字符串格式。 STR_TO_DATE()返回 DATETIME
SELECT STR_TO_DATE('Wed Nov 21 2012', '%a %b %d %Y' )
// return 2012-11-21
然后使用DATEDIFF
DATEDIFF(表达式1,表达式2)
DATEDIFF()返回 expr1 - expr2 ,表示为从一个日期到另一个日期的天数值。
SELECT DATEDIFF(CURRENT_TIMESTAMP(),STR_TO_DATE('Wed Nov 21 2012','%a %b %d %Y'))
//return 8
所以完整的查询将是
$sql="DELETE FROM `journal`
WHERE DATEDIFF(CURRENT_TIMESTAMP(),
STR_TO_DATE('journal_date','%a %b %d %Y')
) > 5";
注意:在STR_TO_DATE
函数
使用%d 如果您存储日期部分与前导零(01..31)
如果您存储没有前导零的月份部分(1..31),请使用%e
答案 1 :(得分:1)
MySQL日期/时间函数全部适用于格式的MySQL DATE和DATETIME值:
2012-11-28
2012-11-28 22:16:00
如果您实际以您指定的格式存储日期,则MySQL无法解析该日期。
有关MySQL日期/时间功能的信息,请参阅:http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html
答案 2 :(得分:1)
您可以使用cron作业运行指定的脚本
答案 3 :(得分:0)
显然日期的顺序很重要。根据{{3}}你的日期是倒退的,所以你可能只得到负数(因此从不超过5,所以没有删除)。
答案 4 :(得分:0)
使用abs()数学函数忽略导致问题的负日期差异。
$sql="delete from `journal` where
abs(datediff(now(), STR_TO_DATE('journal_date', '%a %b %d %Y'))) > 5"
答案 5 :(得分:0)
从journal
删除其中的journal_date< date_sub(curdate(),间隔5天)
它可以使用列journal_date
但" datediff(now(),journal_date)> 5"无法在列journal_date