MySQL。查询出两个特定日期间隔之间的销售额

MySQL。查询出两个特定日期间隔之间的销售额,mysql,mysql-workbench,Mysql,Mysql Workbench,我正在尝试写一个查询,其中包含类别编号、类别名称以及特定日期间隔之间该类别编号的总销售额 SELECT k.CatNr, k.name, lin.Price * lin.Number Totale_Sale FROM kategori k, vare v, ordrelinje lin, ordre ord WHERE k.CatNr = v.CatNr AND v.VNr = lin.VNr AND lin.OrderNr = ord.OrderNr AND ord.Date BETWEEN

我正在尝试写一个查询,其中包含类别编号、类别名称以及特定日期间隔之间该类别编号的总销售额

SELECT k.CatNr, k.name, lin.Price * lin.Number Totale_Sale
FROM kategori k, vare v, ordrelinje lin, ordre ord
WHERE k.CatNr = v.CatNr
AND v.VNr = lin.VNr
AND lin.OrderNr = ord.OrderNr
AND ord.Date BETWEEN 2011-01-14 AND 2011-01-15
GROUP BY k.Catnr;

问题是,这不会返回任何预期值。我特别不确定之间的部分,需要一些关于这方面的建议,使其工作。谢谢

在“2011-01-14”和“2011-01-15”之间使用引号

林的价格*林的编号AS总销售额

有几件事:

  • 日期文字需要单引号:
    “2011-01-14”和“2011-01-15”
    。另一方面,引擎认为你有数字和减法
    2011-01-14
    被评估为编号
    1996


  • 当比较
    Date
    值时,“2011-01-14”和“2011-01-15”之间的
    ord.Date起作用,但如果您有
    DATETIME
    TIMESTAMP
    列/表达式,则不会按预期起作用。使用
    =
    更安全,
    ord.Date
    a
    Date
    、a
    DATETIME
    TIMESTAMP
    列?非常感谢您的建议!
    SELECT k.CatNr, k.name, 
           lin.Price * lin.Number AS Totale_Sale
    FROM kategori k, vare v, ordrelinje lin, ordre ord
    WHERE k.CatNr = v.CatNr
    AND v.VNr = lin.VNr
    AND lin.OrderNr = ord.OrderNr
    AND ord.Date BETWEEN '2011-01-14' AND '2011-01-15'
    GROUP BY k.Catnr;
    
       ord.Date >= '2011-01-14' AND ord.Date < '2011-01-15' + INTERVAL 1 DAY
    
    SELECT 
        k.CatNr, 
        k.name, 
        SUM(lin.Price * lin.Number) AS Totale_Sale
    FROM 
        kategori k
      JOIN 
        vare AS v
            ON k.CatNr = v.CatNr
      JOIN
        ordrelinje AS lin
            ON v.VNr = lin.VNr
      JOIN
        ordre AS ord
            ON lin.OrderNr = ord.OrderNr
    WHERE 
        ord.Date >= '2011-01-14' 
      AND 
        ord.Date < '2011-01-15' + INTERVAL 1 DAY
    GROUP BY 
        k.Catnr, 
        k.name ;