【问题标题】:Get values for every day in specific month (or between months) [duplicate]获取特定月份(或月份之间)每一天的值[重复]
【发布时间】:2012-03-22 18:01:08
【问题描述】:

可能重复:
Get a list of dates between two dates

这是我的 sql:

select * from table as t 
where DateAndTime BETWEEN '2011-03-01' AND '2012-01-25'

问题: * 例如,我需要获取 2012 年 1 月的每一天(周末除外)的数据。

我该怎么做?

【问题讨论】:

  • 也就是说,你想GROUP BY DateAndTime 字段的天部分,忽略周末?
  • 我不认为这是重复的。

标签: mysql datetime select


【解决方案1】:
SELECT
    * 
FROM
    yourtable AS T 
WHERE 
    yourdatetimefield BETWEEN STR_TO_DATE('2012-01-01', '%Y-%m-%d') AND 
                              STR_TO_DATE('2012-12-31', '%Y-%m-%d')
AND 
    DAYOFWEEK(yourdatetimefield) <> 1 AND    '  Sunday
    DAYOFWEEK(yourdatetimefield) <> 7        '  Saturday 
GROUP BY
    DAY(yourdatetimefield);

【讨论】:

    【解决方案2】:

    试试这个。

    SELECT * 
    from table as t 
    where (DateAndTime BETWEEN '2011-03-01' AND '2012-01-25') AND
           DateAndTime NOT IN ('2011-03-03', '2011-03-10') -- Put the excempted
                                                           -- dates here
    

    【讨论】:

    • BETWEEN 可以处理字符串吗?
    • 你可以使用DATE函数。例如,DATE('2011-03-03')
    【解决方案3】:
    select * from table as t 
    where DateAndTime BETWEEN '2011-03-01' AND '2012-01-25' 
    AND (DATEPART(weekday, DateAndTime ) <> 1 and  DATEPART(weekday,DateAndTime ) <> 6)
    

    (DATEPART(weekday, DateAndTime ) = 1 是星期天 (DATEPART(weekday, DateAndTime ) = 6 是星期六

    【讨论】:

      【解决方案4】:

      试试这个查询

      SELECT * FROM tableName
      WHERE DateAndTime BETWEEN '2011-03-01' AND '2012-01-25'
      AND WEEKDAY(DateAndTime) <= 4
      

      【讨论】:

        猜你喜欢
        • 2017-12-04
        • 2015-04-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-13
        • 1970-01-01
        • 2012-02-14
        相关资源
        最近更新 更多