Mysql pg oracle三种数据库获取月份、周的函数比较

MySQLLelove 2019-06-20

这里要获取的月份和周不仅仅是一个数字,比如第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”。

相关推荐