从ADDTIME(CURTIME(),'14400小时')格式选择内容时出错

时间:2012-12-04 04:44:54

标签: php mysql

显然,当我尝试从我的数据库中选择时间时,我偶然发现了编码错误。

SELECT * FROM `videos` WHERE `added_time` > AddTime( CurTime(), '14400 hour' )

是代码,我正在尝试使用“added_time”格式选择10天(14400小时)之前发布的所有视频,因为它适用于我之前的编码,但在这个版本中它可以正常工作。

下面显示的是图像链接,显示了我的视频数据库结构的显示方式。

http://i.imm.io/NURT.png

编辑:以前我有这个问题用于检索和删除10天前发布的公告,这段代码有效,但是这段代码在尝试检索视频时显然无效:/我不知道为什么,他们'重新使用相同的格式。

请参阅:http://i.imm.io/NUSW.png

2 个答案:

答案 0 :(得分:4)

获取added_time的实际日期,然后从NOW()前10天获取日期。

WHERE DATE(added_time) = DATE_SUB(NOW(),INTERVAL 10 DAY)

如果您想删除10天或更长时间内的任何内容,可以将其更改为<=

---现在我们知道其中一个是字符串而不是日期字段。 Conver it。

// Change %Y-%m-%d to your date 
STR_TO_DATE(added_date, '%Y-%m-%d')

经过一番聊天讨论和SQL Fiddlin后,我得到了答案,这对他有用。欢呼声。

SELECT *
FROM videos_shared
WHERE DATE_FORMAT(STR_TO_DATE(added_date, '%a %b %d, %Y, %H:%i'), '%Y-%m-%d') 
<= DATE_SUB(NOW(), INTERVAL 10 DAY)

http://sqlfiddle.com/#!2/63eef/14

答案 1 :(得分:0)

尝试提供全时格式:

  > SUBTIME( CurTime(), '14400:00:00.000000' )

或者替代(减去10天,如下:),

 > SUBTIME( CurTime(), '10 00:00:00.000000')

请参阅此处的文档 - &gt; SUBTIME()