2015-11-07 93 views
0

表视频MySQL的选择行

id | title | time 
------------------------ 
1 | o'najr | 1406332800 

我想选择哪个是6个月,从给定的时间间隔之间的行。更新或更旧

因此,如果查询时间为前。 1446076800比6个月大或6个月以上的所有行都会被选中。

timeUNIX TIMESTAMP格式。

因此,如果视频在2015年10月上传,则会选择2015年4月和更新版本上传的所有视频。还将选择2015年10月至2016年4月的所有视频。

6 months <---- || query time || ----> 6 months

这是我的查询,但它并没有在所有的工作。它只是一个结构而不是工作查询。

:time是将用于查询的变量。

select `title` 
from `videos` 
where DATE_FORMAT(FROM_UNIXTIME(time - :time)) > INTERVAL 6 MONTH 
     or 
     DATE_FORMAT(FROM_UNIXTIME(:time - time)) < INTERVAL 6 MONTH 
+1

你为什么与'php'标记呢? – trincot

+1

看看'BETWEEN'语法,即'WHERE x BETWEEN y and z' – RiggsFolly

回答

1

您的查询不太合理。您正试图将特定日期与时间间隔进行比较。

试试这个:

SELECT title FROM videos 
WHERE FROM_UNIXTIME(time) BETWEEN 
    DATE_SUB(FROM_UNIXTIME(:time), INTERVAL 6 MONTH) 
    AND DATE_ADD(FROM_UNIXTIME(:time), INTERVAL 6 MONTH) 
+3

好。也许它使用'BETWEEN'更好?我想你还需要在'时间' – trincot

+1

好的建议中调用'FROM_UNIXTIME'。我会修好它。 – mkasberg

+1

另外,使用'FROM_UNIXTIME'时不需要'DATE_FORMAT'。 – mkasberg