将日期转换为周

时间:2015-03-16 16:24:51

标签: mysql sql

如何将连续日期转换为几周,saturday should be the week ending Eample:

2/27/2015       3/6/2015          3/13/2015      3/20/2015

这里我提供了有关我的要求的更多信息,以便您可以轻松理解。

我的db中有一个datetime字段,比如说Date2。我需要将这个日期分为几个星期mm/ dd/ yyyy. 让我们以date2开头为例1/1/201520/1/2015

1/1/2015-3/1/2015 this range displayed as   3/1/2015,
4/1/2015-10/1/2015 ----------------------- 10/1/2015,
11/1/2015-17/1/2015 ---------------------- 17/1/2015,
18/1/2015-24/1/2015 ---------------------  24/1/2015

1 个答案:

答案 0 :(得分:0)

我不清楚你在问什么,所以我猜。如果我猜错了,请原谅。

我们假设您有一个名为DATETIME的任意Date2列,并且您希望在该值之前产生紧邻周日的DATE。换句话说,您希望找出DATETIME发生的那一周。

你可以这样做:

 FROM_DAYS(TO_DAYS(Date2) -MOD(TO_DAYS(Date2) -1, 7))

因此,如果您的销售表包含customer_idDate2sale,则可以按周汇总:

SELECT FROM_DAYS(TO_DAYS(Date2) -MOD(TO_DAYS(Date) -1, 7)) week_beginning,
       COUNT(*) num_transactions,
       COUNT(DISTINCT customer_id) num_customers,
       SUM(sale) total_sales 
  FROM sales
 GROUP BY FROM_DAYS(TO_DAYS(Date2) -MOD(TO_DAYS(Date) -1, 7))

这将显示每个日历周开始的星期日的日期。如果您希望星期六在每个日历周结束,请改用它。

SELECT FROM_DAYS(TO_DAYS(Date2) -MOD(TO_DAYS(Date) -1, 7))
          + INTERVAL 6 DAY week_ending,
       COUNT(*) num_transactions, ...

我在这里详细写了这篇文章:http://www.plumislandmedia.net/mysql/sql-reporting-time-intervals/

你可以