比如我這邊查詢jz_user表用戶創建時間大於四月一號到四月三十號為例
代碼如下 復制代碼select FROM_UNIXTIME(create_time),user_id from jz_user Where DATE_FORMAT(FROM_UNIXTIME(create_time),'%Y-%m-%d') <= DATE_FORMAT("2013-4-30",'%Y-%m-%d') AND DATE_FORMAT(FROM_UNIXTIME(create_time),'%Y-%m-%d') >= DATE_FORMAT("2013-4-1",'%Y-%m-%d')
TO_DAYS(date) 函數
給定一個日期date,返回一個天數(從年份0開始的天數)。
比如下面的例子:
代碼如下 復制代碼
mysql> SELECT TO_DAYS('2009-08-07');
+-----------------------+
| TO_DAYS('2009-08-07') |
+-----------------------+
| 733991 |
+-----------------------+
1 row in set
TO_DAYS() 不用於陽歷出現(1582)前的值,原因是當日歷改變時,遺失的日期不會被考慮在內。
請記住,MySQL“日期和時間類型”中的規則將日期中的二位數年份值轉化為四位。例如,‘2010-08-07′和 ‘10-08-07′ 被視為同樣的日期:
代碼如下 復制代碼
mysql> SELECT TO_DAYS('2009-08-07'),TO_DAYS('09-08-07');
+-----------------------+---------------------+
| TO_DAYS('2009-08-07') | TO_DAYS('09-08-07') |
+-----------------------+---------------------+
| 733991 | 733991 |
+-----------------------+---------------------+
1 row in set
對於1582年之前的日期(或許在其它地區為下一年),該函數的結果實不可靠的。
now() 函數
NOW() 函數返回當前的日期和時間。
mysql> select (now());
+---------------------+
| (now()) |
+---------------------+
| 2010-08-26 21:18:44 |
+---------------------+
1 row in set
to_days(current_date)也可以實現上面的功能。
mysql> select to_days(current_date);
+-----------------------+
| to_days(current_date) |
+-----------------------+
| 734375 |
+-----------------------+
1 row in set
結果
現在我們可以得出問題的答案了:
select * from news where to_days(now())-to_days(newsdate) < 30 order by view desc limit 0, 10
可以獲得一個月內浏覽數最高的十條記錄。