SQL-过去4周的日期列

时间:2015-08-21 08:29:44

标签: sql

USERS

   ID  TIMEMODIFIED
    1   1400481271
    2   1400481489
    3   1400486453
    4   1400486525
    5   1401777484

我有时间修改字段,从时间修改后,我需要从今天的日期开始获取最近4周的行。

SELECT id FROM USERS
WHERE FROM_UNIXTIME(timemodified,'%d-%m-%Y') >= curdate() 
AND FROM_UNIXTIME(timemodified,'%d-%m-%Y') < curdate()-1

1 个答案:

答案 0 :(得分:0)

您的时间已经是Unix时间戳格式。请记住,将[TIMEMODIFIED]与转换为Unix时间戳的当前日期进行比较会更有效率。此外,除非[TIMEMODIFIED]可能在将来,否则您无需检查任何上限。

尝试:

-- 60x60x24x7x4 = 2419200 seconds in four weeks
SET @unix_four_weeks_ago = UNIX_TIMESTAMP(curdate()) - 2419200;  

SELECT id FROM USERS
WHERE timemodified >= @unix_four_weeks_ago;

NB。四个星期前(即今天 - 28天)在答复时是1,437,696,000(7月24日)。您提供的示例中的最新记录的时间戳可以追溯到2014年6月3日,因此查询不会返回这些记录。