【问题标题】:Select MySQL 3 months values选择 MySQL 3 个月的值
【发布时间】:2015-05-31 17:35:52
【问题描述】:

我需要从我的数据库中选择三个月的值,第三个月的第一天值除外。

例如:

我想选择从现在起三个月的值:5 月、4 月、3 月,没有从 3 月 1 日开始的值

每月的每一天都有 24 小时的温度值,我想像之前所说的那样排除第三个月的第一天。

谢谢!!

【问题讨论】:

  • 每个月你在数据库中有一条记录(除了三月,你有两条记录)?如果没有,您要选择哪些记录?我希望您将日期存储在date(time) 类型列中。您可以添加您的尝试,到目前为止您尝试了什么。
  • 请使用示例数据、所需结果和您尝试过的查询来编辑您的问题。 SQL Fiddle 也很有帮助。
  • 感谢您的宝贵时间!

标签: mysql


【解决方案1】:

获取当月的第一天(in three months) - How to get first day of every corresponding month in mysql?

CAST(DATE_FORMAT(DATE_ADD(NOW(),INTERVAL 2 MONTH) ,'%Y-%m-01') as DATE)

获取您的查询between 日期:

date BETWEEN NOW() AND DATE_ADD(NOW(), INTERVAL 3 MONTH)

你的查询应该是这样的:

WHERE date BETWEEN NOW() AND DATE_ADD(NOW(), INTERVAL 3 MONTH) AND date != CAST(DATE_FORMAT(DATE_ADD(NOW(),INTERVAL 2 MONTH) ,'%Y-%m-01') as DATE)

【讨论】:

    【解决方案2】:
    SELECT * 
    FROM tablename 
    WHERE 
       (date LIKE '____-05-__' 
     OR date LIKE '____-04-__' 
     OR date LIKE '____-03-__') 
    AND date NOT LIKE '____-03-01';
    

    【讨论】:

      【解决方案3】:

      使用DAYMONTH 函数和YEAR 过滤您的日期,例如:

      YEAR(date) = YEAR(CURDATE()) 
      AND 
      ( MONTH(date) > MONTH(CURDATE()) - 2
        OR 
        ( MONTH(date) = MONTH(CURDATE()) - 2
          AND
           DAY(date) > 1 ))
      

      【讨论】:

        猜你喜欢
        • 2013-11-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-07
        • 2011-05-25
        • 2014-01-24
        相关资源
        最近更新 更多