【问题标题】:Msql last year data onlysql 仅去年数据
【发布时间】:2014-10-14 01:00:23
【问题描述】:

我正在尝试使用 mysql 获取仅去年捐赠的金额,

例如:这是我的示例表。在这里,我想获取捐赠的金额 仅去年。这里最近的捐赠是在 oct-14 完成的,所以我想要从 oct -14 到 oct - 13 而不是 sep -13 的数据

+--------+-------+------+---------+
| nid | amount | time | month |
+--------+-------+------+---------+
| X   |   30   |      |sep-13 |
+--------+-------+------+---------+
| X   |   30   |      |sep-13 |
+--------+-------+------+---------+
| A   |   10   |      |oct-13 |
+--------+-------+------+---------+
| A   |   10   |      |oct-13 |
+--------+-------+------+---------+
| B   |   20   |      |oct-14 |
+--------+-------+------+---------+
| C   |   20   |      |oct-14 |
+--------+-------+------+---------+

【问题讨论】:

标签: mysql sql


【解决方案1】:

如果您的“月”列是日期列,则可以使用 EXTRACT 函数。

SELECT * FROM _table_ WHERE EXTRACT(year from `month`) = 13;

【讨论】:

    【解决方案2】:
    SELECT * FROM TABLE WHERE RIGHT(MONTH, 2) = '13'
    

    如果去年的日期是一个静态值并且不需要为每年的项目进行调整,无论是 VARCHAR 还是日期,该值都将被视为字符串,并且正确的 2 个字符将保持不变。 - 对不起帽子。

    如果您正在寻找动态方法...

    SELECT * FROM TABLE WHERE STR_TO_DATE(MONTH, '%Y') = YEAR(CURDATE() - 1)
    

    或者类似上面的东西。同样,这取决于定义该字段的数据类型。但这应该可以解决问题。

    【讨论】:

      【解决方案3】:

      如果您需要根据表中的最大年份返回行,那么以下查询之一可以提供帮助:

      1. 如果monthDATE,请输入:

        SELECT *
          FROM sample_table
          WHERE YEAR(month) = YEAR((SELECT MAX(month) FROM sample_table))
        
      2. 如果month是字符类型:

        SELECT *
          FROM sample_table
          WHERE RIGHT(month,2) = (SELECT MAX(RIGHT(month,2)) FROM sample_table)
        

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-09-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多