2017-03-05 139 views
0

我從來沒有真正搞混這種類型的查詢,所以我需要一些幫助。我有一個包含以下從unix時間戳選擇最近7天mysql

1488693506 
1488576676 
1488575917 
1487563577 
1487563170 
1487352348 
1487352291 
1487207322 

我使用下面的MySQL語句

SELECT * FROM table WHERE (`timestamp` > DATE_SUB(now(), INTERVAL 7 DAY)) 

從我所看到的,應返回過去7天的記錄中,一個timestamp列的表從我列出的時間戳開始的最後7天,但沒有記錄正在返回。我究竟做錯了什麼?

回答

3

您應該使用from_unixtime函數將日期轉換無論對where條件,並看到一個可讀的日期格式:

SELECT from_unixtime(`timestamp`) 
    FROM table 
WHERE from_unixtime(`timestamp`) > date_sub(now(), interval 7 day); 

它會告訴你:

March, 05 2017 05:58:26 
March, 03 2017 21:31:16 
March, 03 2017 21:18:37 

看到它在這裏工作: http://sqlfiddle.com/#!9/d60e91/1

編輯:假設時間戳被編入索引,寫入同樣東西的更優化的方式可能如下s:

SELECT FROM_UNIXTIME(`timestamp`) x 
    FROM test_t 
WHERE timestamp > UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 7 DAY));