【问题标题】:How do I select two weeks ago in MYSQL?如何在MYSQL中选择两周前?
【发布时间】:2011-07-13 18:31:07
【问题描述】:

我有一个由如下所示的 sql 查询驱动的报告:

   SELECT batch_log.userid,
         batches.operation_id,
         SUM(TIME_TO_SEC(ramses.batch_log.time_elapsed)),
         SUM(ramses.tasks.estimated_nonrecurring + ramses.tasks.estimated_recurring),
         DATE(start_time)
    FROM batch_log
    JOIN batches ON batch_log.batch_id=batches.id
    JOIN ramses.tasks ON ramses.batch_log.batch_id=ramses.tasks.batch_id
    JOIN protocase.tblusers on ramses.batch_log.userid = protocase.tblusers.userid
   WHERE DATE(ramses.batch_log.start_time) > "2011-02-01" 
     AND ramses.batch_log.time_elapsed > "00:03:00" 
     AND DATE(ramses.batch_log.start_time) < now() 
     AND protocase.tblusers.active = 1
     AND protocase.tblusers.userid NOT in ("ksnow","smanning", "dstapleton")
GROUP BY userid, batches.operation_id, date(start_time)
ORDER BY start_time, userid ASC

由于要与当前支付期的时间进行比较,因此会导致错误。
我们的发薪期从星期日开始,第一个发薪期是 2011-02-01,最后一个发薪期是本月 4 日。如何将其放入我的 where 语句中以从查询中删除最近的付款期?

编辑:所以现在我正在使用 date_sub(now(), INTERVAL 2 WEEK) 但我真的需要一周中的某一天(SUNDAY),因为它是星期三,它会在星期三切断它。

【问题讨论】:

标签: mysql sql


【解决方案1】:

您想使用DATE_SUB,并作为an example

具体来说:

select DATE_SUB(curdate(), INTERVAL 2 WEEK)

两周前找到你。将 DATE_SUB ... 部分插入到您的 sql 中,您就可以开始了。

根据您的评论进行编辑:

查看DAYOFWEEK:

你可以按照以下方式做一些事情:

DATE_SUB(DATE_SUB(curdate(), INTERVAL 2 WEEK), INTERVAL 2 + DAYOFWEEK(curdate()) DAY)

(我没有一个 MySql 实例来测试它......但基本上减去星期一之后的天数。)

【讨论】:

    【解决方案2】:

    问题不太清楚,尤其是在编辑之后 - 现在还不清楚“支付期”是两周长,还是您想从上周日开始最后两周?我假设这个时期是两周......那么你首先需要知道最近一个时期(你想忽略它,因为它还没有结束)已经持续了多少天。要获得该天数,您可以使用如下表达式

    DATEDIFF(today, FirstPeriod) % 14
    

    其中FirstPeriod2011-02-01。现在,您使用date_sub() 从查询中的当前日期删除该天数。确切的表达方式取决于周期的定义方式,但您应该明白...

    【讨论】:

      猜你喜欢
      • 2011-10-04
      • 2011-11-15
      • 2019-10-01
      • 2013-09-10
      • 1970-01-01
      • 1970-01-01
      • 2015-05-04
      • 1970-01-01
      • 2015-04-09
      相关资源
      最近更新 更多