问题:开发时建表没有 建立day month year 字段 直接用的时间戳,但是统计时要用到按天,月,年进行排序,如何实现?
mysql没有提供unix时间戳的专门处理函数,如果遇到时间分组,而用的又是整型unix时间戳,则只有通过FROM_UNIXTIM()函数将unix时间戳转为datetime等其他的日期类型!
下面来看具体的例子
一、年度查询
查询 本年度的数据
代码示例:
~~~
SELECT *
FROM news_info
WHERE year( FROM_UNIXTIME( BlogCreateTime ) ) = year( curdate( ))
~~~
二、查询季度数据
查询数据附带季度数
代码示例:
~~~
SELECT ArticleId, quarter( FROM_UNIXTIME( `BlogCreateTime` ) )
FROM `news_info`
~~~
其他的同前面部分:查询 本季度的数据
代码示例:
~~~
SELECT *
FROM news_info
WHERE quarter( FROM_UNIXTIME( BlogCreateTime ) ) = quarter( curdate( ))
~~~
三、查询月度数据
本年本月统计(MySQL)
代码示例:
~~~
select * from booking where month(booking_time) =
month(curdate()) and year(booking_time) = year(curdate())
~~~
本周统计(MySQL)
复制代码 代码示例:
~~~
select * from spf_booking where month(booking_time) =
month(curdate()) and week(booking_time) = week(curdate())
~~~
四、时间段
N天内记录
代码示例:
~~~
WHERE TO_DAYS(NOW()) - TO_DAYS(时间字段) <= N
~~~
当天的记录
代码示例:
~~~
where date(时间字段)=date(now())
~~~
或
~~~
where to_days(时间字段) = to_days(now());
~~~
查询一周:
代码示例:
~~~
select * from table where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(column_time);
~~~
查询一个月:
代码示例:
~~~
select * from table where DATE_SUB(CURDATE(), INTERVAL INTERVAL 1 MONTH) <= date(column_time);
~~~
查询'06-03'到'07-08'这个时间段内所有过生日的会员:
代码示例:
~~~
Select * From user Where
DATE_FORMAT(birthday,'%m-%d') >= '06-03' and DATE_FORMAT(birthday,'%m-%d')
<= '07-08';
~~~
统计一季度数据,表时间字段为:savetime
代码示例:
~~~
group by concat(date_format(savetime, '%Y '),FLOOR((date_format(savetime, '%m ')+2)/3))
~~~
或
~~~
select YEAR(savetime)*10+((MONTH(savetime)-1) DIV 3) +1,count(*)
from yourTable
group by YEAR(savetime)*10+((MONTH(savetime)-1) DIV 3) +1;
~~~
五、分组查询
1、年度分组
2、月度分组
3、先按年度分组,再按月度分组
4、按年月分组
代码示例:
~~~
SELECT count(ArticleId), date_format(FROM_UNIXTIME( `BlogCreateTime`),'%y%m') sdate
FROM `news_info`
group by sdate
~~~
结果:
代码示例:
|count( ArticleId ) |sdate|
|--|--|
|17|0901|
|11|0902|
|5|0903|
|6|0904|
|2|0905|
|1 |0907|
|12|0908|
|6| 0909|
|11|0910|
|3|0911|
~~~
SELECT count(*) from ea_user
WHERE FROM_UNIXTIME(addtime,'%Y年%m月%d日 %h') ="2016年03月17日 10"
order by addtime desc
~~~
- 目录
- 数据库表
- 13.7.5.6 SHOW COLUMNS Syntax
- Mysql生成列
- 表注释
- 默认字符集
- 索引
- 外键约束
- 数据类型
- NULL
- 查询语句
- IF
- CASE
- FIND_IN_SET
- 更新语句
- 复制更新
- 截取更新
- 插入语句
- 从一张表查询一个字段值插入另一个表中
- 统计函数
- COUNT
- 分组统计
- 日期时间字段按照日期分组
- GROUP_CONCAT
- 多字段关联
- LENGTH
- mb_strlen()
- SUM
- 按周,按月,按日分组统计数据
- 日期时间
- MySQL日期时间数据类型使用总结
- 计算日期差
- 插入当前日期时间
- 时间比较
- datetime
- 日期时间取时间段
- 统计
- 整型unix时间戳
- 计算两条相邻记录的时间差
- 日期时间-函数
- 常用函数
- CURDATE
- DATEDIFF
- DATE_ADD
- DATE_SUB
- EXTRACT
- NOW
- TO_DAYS
- UNIX_TIMESTAMP
- 作为时间比较
- FROM_UNIXTIME
- DATE_FORMAT
- TIMESTAMPDIFF
- 触发器
- 存储过程
- MySQL存储过程的基本函数
- 分页存储过程
- 存储过程教程
- 临时表
- 备份表
- CRM
- 客户关系表
- 通讯录
- SQL函数
- ISNULL
- IFNULL
- SUBSTR
- 模糊查询
- JSON
- Json函数
- Json数据类型
- 使用Json
- 使用navicat
- 虚拟列
- CRUD
- 索引设计
- 增加多字段索引
- 共享排他锁