2013-07-03 155 views
0

我读了很多主题来获取发布在不同时期的数据,但由于我的mysql表中的时间是STRING格式,所以无法实现。从Mysql的最后一天,一周,一个月和一年中提取数据

SELECT s.user_id, count(*) AS wins, u.username, u.avatar,u.avatar_uploaded 
      FROM on_scores AS s 
      LEFT JOIN on_users AS u ON (u.userid = s.user_id) 
      WHERE s.is_high = '1' AND DATE(s.date_score) >= DATE_SUB(CURDATE(), INTERVAL 7 DAY) 
         GROUP BY s.user_id 
      ORDER BY wins DESC 
      LIMIT 10 

我试过STR_TO_DATE方法,但仍然没有输出。

+0

它是如何格式化?示例数据? – ethrbunny

+0

by time()函数在mysql中插入命令如1361639735 –

回答

0

使用from_unixtime函数可将时间转换为类似日期的格式。

更多信息here

格式化结果日期的信息 - here

例子:

select date_sub(from_unixtime(s.datescore), INTERVAL 1 MONTH) as monthfromdatevalue; 
select datediff(from_unixtime(s.datescore, curdate()) as howlongago_fromtoday; 
+0

如何通过last weak,month,year来调整它? –

+0

使用'date_sub'函数:http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-sub(看起来你已经知道这已经...) – ethrbunny

+0

我不熟悉这个用法。你会通过例子更新你的答案吗? –

相关问题