gpt4 book ai didi

mysql - 如何在mysql中根据2个日期选择记录

转载 作者:太空宇宙 更新时间:2023-11-03 10:40:01 29 4
gpt4 key购买 nike

我有一张表 tbl_remit。

|RemitNo|id|emp|emp_loc|  emp_cat |ap_from| ap_to |amount|
| 1 |1 | a | PAL | PRIVATE |12/2015|12/2015| 50.00|
| 2 |1 | a | PAL | PRIVATE |01/2016|01/2016|100.00|
| 3 |1 | a | PAL | PRIVATE |02/2016|02/2016|100.00|
| 4 |2 | b | BTG |GOVERNMENT|01/2016|01/2016|200.00|
| 5 |2 | b | BTG |GOVERNMENT|02/2016|02/2016|200.00|
| 6 |3 | c | MAR | PRIVATE |12/2015|12/2015| 50.00|
| 7 |3 | c | MAR | PRIVATE |01/2016|01/2016|100.00|
| 8 |3 | c | MAR | PRIVATE |02/2016|02/2016|100.00|

我需要创建一个 view_ap2015below 并选择 2015 年及以下的所有汇款总额/总和,其中 emp_cat 是私有(private)的,并按 emp_loc 对其进行分组。

我需要得到这张 table 。

|emp_loc|  emp_cat |amount|
| PAL | PRIVATE | 50.00|
| MAR | PRIVATE | 50.00|

我用了这个语句,但是2016年的汇款还在。

SELECT Emp_loc, Emp_Cat, FORMAT(SUM(Amount),2) As Amount
FROM tbl_remit
WHERE AP_from <= '01/01/2015' AND AP_To <= '01/01/2015' AND Emp_Cat = 'PRIVATE'
GROUP BY Emp_Loc

是不是因为日期的AP_From和AP_To Format只有Month和Year?

谢谢。

最佳答案

正如@Giorgos 所指出的,您似乎使用文本类型而不是日期类型来存储日期。 永远不要这样做。但是,既然已经这样做了,您就可以在进行比较时使用 STR_TO_DATE 将文本转换为日期。

您遇到的另一个问题是您在 GROUP BY 查询中选择了非聚合列。

SELECT Emp_loc, Emp_Cat, FORMAT(MIN(Amount),2) As Amount
FROM tbl_remit
WHERE STR_TO_DATE(AP_from, '%m/%Y') <= '2015-01-01' AND
STR_TO_DATE(AP_to, '%m/%Y') <= '2015-01-01' AND
Emp_Cat = 'PRIVATE'
GROUP BY Emp_Loc, Emp_Cat

关于mysql - 如何在mysql中根据2个日期选择记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40190153/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com