【发布时间】:2018-10-05 07:17:28
【问题描述】:
我有一个表格,我想在其中获取特定日期列的总价格。日期是字符串(eg: January 2018)。我尝试的是将字符串转换为日期。
SELECT
SUM(price_amount) as 'total_paid',
STR_TO_DATE(CONCAT('01 ',price_month), "%M %d %Y") as dates
FROM user_prices
WHERE price_type = 'cash' AND price_month >= DATE('January 01 2018')
GROUP BY price_month
ORDER BY price_month DESC;
结果为空。我只需要获取表中日期等于或大于 2018 年 1 月 1 日的每个现有月份的总和。并且还按月对它们进行分组。
email price_amount price_month price_type date_added
1@gmail.com 200 April 2017 cash ---
19@gmail.com 400 December 2017 cash ---
12@gmail.com 100 January 2018 cash ---
123@gmail.com 230 January 2018 cash ---
1234@gmail.com 250 January 2018 credit ---
321@gmail.com 200 April 2018 cash ---
32@gmail.com 120 March 2018 cash ---
所以上面的例子应该显示下面的预期结果:
price_month total_paid
March 2018 120
April 2018 200
January 2018 330
【问题讨论】:
-
price_month列实际上是文本,还是您只是以这种方式显示这些日期? -
将日期存储为日期。然后回复我们。
-
@TimBiegeleisen 它的文本 - varchar
-
你的连接创建了一个模式'd M Y';对于您指定“M d Y”的转换(并且您使用了错误类型的引号) - 您需要使用匹配模式。
标签: mysql