亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在MySQL中按周分組?

如何在MySQL中按周分組?

GCT1015 2019-12-26 13:50:19
Oracle的表服務器提供了一個內置功能TRUNC(timestamp,'DY')。此功能將任何時間戳轉換為前一個星期日的午夜。在MySQL中執行此操作的最佳方法是什么?Oracle還提供TRUNC(timestamp,'MM')將時間戳轉換為發生該月的第一天的午夜。在MySQL中,這很簡單:TIMESTAMP(DATE_FORMAT(timestamp, '%Y-%m-01'))但是這個DATE_FORMAT技巧將在數周內失效。我知道此WEEK(timestamp)功能,但是我真的不想要一年內的星期數。這些東西是用于多年的工作。
查看完整描述

3 回答

?
嚕嚕噠

TA貢獻1784條經驗 獲得超7個贊

您可以同時使用YEAR(timestamp)和和WEEK(timestamp),并在SELECT和GROUP BY子句中使用這兩個表達式。


不太優雅,但功能...


當然,您也可以將這兩個日期部分組合為一個表達式,例如


SELECT CONCAT(YEAR(timestamp), '/', WEEK(timestamp)), etc...

FROM ...

WHERE ..

GROUP BY CONCAT(YEAR(timestamp), '/', WEEK(timestamp))

編輯:正如馬丁指出的那樣,您也可以使用該YEARWEEK(mysqldatefield)函數,盡管其輸出不如上面的較長公式對眼睛友好。


編輯2 [3年半后!]:

YEARWEEK(mysqldatefield)使用可選的第二個參數(mode設置為0或2)可能是通過聚合的最佳途徑完整周(即包括了幾個星期,其跨在1月1日),如果是所需要的。YEAR() / WEEK()此答案最初提出的方法的效果是將此類“跨越”周的匯總數據分成兩部分:一個與前一年,一個與新年。

在會計等方面,通常需要每年進行一次完整的清理,以不超過兩周的時間為代價,在兩端分別花費一個星期,因此這種YEAR() / WEEK()方法更好。


查看完整回答
反對 回復 2019-12-26
  • 3 回答
  • 0 關注
  • 1589 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號