Mysql按時間分組查詢(每天|每月|每年)

weixin_33766168發表於2018-10-23

根據儲存的資料型別不同,有不同的處理方式,常見的有兩種儲存形式:

  1. 時間戳int
  2. 日期時間datetime

時間戳

早期一直在使用的方式,缺點:

  1. 在資料庫中不直觀
  2. 查詢的時候涉及到轉換

例如在查詢的時候需要將日期時間轉化為時間戳:
where created_at < UNIX_TIMESTAMP('2018-9-28 00:00:00')

UNIX_TIMESTAMP()可以直接表示當前的時間戳

時間戳轉化為日期時間:
SELECT FROM_UNIXTIME(875996580)

FROM_UNIXTIME第二個引數用於指定日期格式,例如:

SELECT SUM(price), FROM_UNIXTIME(created_at, '%m%d') as day FROM table GROUP BY day
... WHERE FROM_UNIXTIME(created_at, '%Y') = '2018'

常用的格式是這樣的:%Y%m%d%H%i%s

日期時間

可以直接進行比較

格式轉化:
DATE_FORMAT()

SELECT SUM(price), DATE_FORMAT(created_at, '%m%d') as day FROM table GROUP BY day

相關文章