問題:開發時建表沒有 建立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
- 索引設計
- 增加多字段索引
- 共享排他鎖