代码之家  ›  专栏  ›  技术社区  ›  Yasin Yörük

如何使用连接列的between表达式

  •  0
  • Yasin Yörük  · 技术社区  · 12 年前

    我试图从一个表中获取数据。但这是一个旧表,其中有数千行,但日期列是分开的。我是说,月份和年份在不同的栏目中。

    |id | member | month | year | balance |
    |-------------------------------------|
    |1  | 1001   | 11    | 2013 | 100     |
    |2  | 1002   | 11    | 2013 | 120     |
    |3  | 1003   | 11    | 2013 | 105     |
    |4  | 1001   | 12    | 2013 | 140     |
    |5  | 1002   | 12    | 2013 | 130     |
    |6  | 1003   | 12    | 2013 | 80      |
    |7  | 1001   | 1     | 2014 | 90      |
    |8  | 1002   | 1     | 2014 | 20      |
    |9  | 1003   | 1     | 2014 | 180     |
    --------------------------------------|
    

    这是示例表。我试图获取2013年第10个月和2014年第2个月之间的数据。

    SELECT 
        SUM(balance) 
    FROM 
        sample_table 
    WHERE 
        CONCAT(month,year) BETWEEN 102013 AND 022014
    

    此查询给出了空结果。我怎样才能得到真正的结果?任何人都可以给我一个主意。

    --编辑--

    日期范围可以更改。所以,如果我能得到真正的结果,两者之间是最好的解决方案。

    1 回复  |  直到 12 年前
        1
  •  0
  •   Gordon Linoff    12 年前

    尝试表达 where 条款如下:

    SELECT SUM(balance) 
    FROM sample_table 
    WHERE year*100 + month between 201301 and 201402;
    

    也就是说,以数字而不是字符串的形式进行比较。使用字符串时,需要前导零才能获得正确的比较。

    更重要的是,使用YYYYMM而不是MMYYYY格式。前者适用于比较,后者不适用。