最佳答案
shopkeeper
表有以下字段:
id (bigint),amount (numeric(19,2)),createddate (timestamp)
比方说,我有上面的表。我想要昨天和 通过将金额打印成美分来生成一份报告。
一种方法是在我的 Java 应用程序中执行计算并执行一个简单的查询
Date previousDate ;// $1 calculate in application
Date todayDate;// $2 calculate in application
select amount where createddate between $1 and $2
然后在我的 java 应用程序中循环遍历记录并将金额转换为美分并生成报告
另一种方法类似于在 sql 查询本身中执行计算:
select cast(amount * 100 as int) as "Cents"
from shopkeeper where createddate between date_trunc('day', now()) - interval '1 day' and date_trunc('day', now())
然后循环遍历记录并生成报告
在某种程度上,我所有的处理都是在 Java 应用程序中完成的,并且触发了一个简单的查询。 在其他情况下,所有转换和计算都在 Sql 查询中完成。
上面的用例只是一个例子,在真实的场景中,一个表可能有许多列需要处理类似的类型。
你能告诉我哪种方法在性能和其他方面更好吗? 为什么