Postgresql Postgres查询以获取按天分组的日期和总金额

Postgresql Postgres查询以获取按天分组的日期和总金额,postgresql,Postgresql,我有一个带有字段的日志表 金额、日期 我需要得到每天分组的金额和月份的总和 我需要将sqlite代码迁移到postgresql,但我发现代码迁移有点困难 SELECT SUM(amount),transaction_date FROM log WHERE user_id = 1 AND strftime('%Y', transaction_date) = '2019' GROUP BY strftime('%d', transaction_date); 我需要的是2019年按天分组的日期和总金

我有一个带有字段的日志表 金额、日期 我需要得到每天分组的金额和月份的总和

我需要将sqlite代码迁移到postgresql,但我发现代码迁移有点困难

SELECT SUM(amount),transaction_date FROM log WHERE user_id = 1 AND strftime('%Y', transaction_date) = '2019' GROUP BY strftime('%d', transaction_date);
我需要的是2019年按天分组的日期和总金额

您需要
extract()
函数而不是
strftime()
来获取年份并将
transaction\u日期
转换为日期,前提是它是
时间戳
,如果它是数据类型
date
删除转换
::date

SELECT 
  SUM(amount),
  transaction_date::date 
  FROM log WHERE user_id = 1 AND extract(year from transaction_date) = 2019 
GROUP BY transaction_date::date
您需要使用
extract()
函数而不是
strftime()
来获取年份并将
transaction\u date
转换为日期,前提是它是
timestamp
,如果它是数据类型
date
则删除转换
::date

SELECT 
  SUM(amount),
  transaction_date::date 
  FROM log WHERE user_id = 1 AND extract(year from transaction_date) = 2019 
GROUP BY transaction_date::date

当您在postgresql上运行此代码时会发生什么情况?现在由于@ForPas它工作正常当您在postgresql上运行此代码时会发生什么情况?现在由于@forpasI它工作正常尝试了我的其他查询,但没有按预期工作。查询如下:选择总和(金额)、类别、交易日期从日志中,其中用户id={current_user.id}和strftime(“%m”,transaction_date)={month}按类别分组;如果选择
transaction_date
,则必须将其添加到GROUP BY:
GROUP BY category,transaction_date
。Postgres不是允许非标准sql的sqlite。也不使用strftime,而是extract()。谢谢你提供的信息。我想我需要浏览postgres文档:)我尝试了我的其他查询,但没有按预期进行。查询如下:从日志中选择总和(金额)、类别、交易日期,其中用户id={current_user.id}和strftime('%m',交易日期)='{month}'按类别分组;如果选择
transaction\u date
,则必须将其添加到GROUP BY:
GROUP BY category,transaction\u date
。Postgres不是sqlite,它允许非标准sql。也不使用strftime,而是extract()。感谢您提供的信息。我想我需要浏览Postgres文档:)