Mysql pg oracle三種資料庫獲取月份、周的函式比較

kamushin233發表於2015-08-27

這裡要獲取的月份和周不僅僅是一個數字,比如第23周,而是說以周來截斷一個日期,用來以周為單位做統計。
所以要麼得到的是 2015-05 要麼得到 2015-05-03(假設3是這周的第一天), 或者得到 2015-23 表示2015年第23周 也勉強可以。

  • 月份
    因為月份本身是date格式的一個substring,所以取月份都比較方便。
    M date_format(date, `%Y%M`)
    P date_trunc(`MONTH`, date)
    O to_char(date, `MM-YYYY`) or TRUNC(date, `MONTH` or `MM`) # 我認為第二種更好


  • M CONCAT(YEAR(date), `/`, WEEK(date)) 或者 FROM_DAYS(TO_DAYS(date) -MOD(TO_DAYS(date) -1, 7)) 後面這….看著就ugly.
    P date_trunc(`WEEK`, date)
    O TRUNC(date, `WW`)

看起來MySQL最弱。PG表達最簡單,Oracle在表達WEEK的時候只能用W或者WW,而不能直接用“WEEK”。

相關文章