VALUES TRIM(CAST(CAST(YEAR( { fn TIMESTAMPADD(SQL_TSI_MONTH, -6 ,
CURRENT_DATE) }) AS CHAR(4) ) AS VARCHAR(4))) || '-' ||
TRIM(CAST(CAST(MONTH( { fn TIMESTAMPADD(SQL_TSI_MONTH, -6 ,
CURRENT_DATE) }) AS CHAR(2) ) AS VARCHAR(2)))
以上语句为MONTH(xxx)返回5而不是05 这是不希望的。比较不正确 因为11小于5,其中essense 11实际上更大 比5
编辑: 使用上面的JavaDB / Derby SQL语句,我想得到 例如今天是2013-11-23,六个月前是2013-05-23 比较时
select p.ProductCode , p.ProductName as pn, sum( od.NetSales) AS Sales
from
products p
INNER JOIN order_details od ON (p.ProductCode = od.ProductCode)
INNER JOIN orders o ON (od.OrderCode = o.OrderCode)
where TRIM(CAST(CAST(YEAR(o.PurchaseDateTime) AS CHAR(4)) AS VARCHAR(4))) || '-' ||
TRIM(CAST(CAST(MONTH(o.PurchaseDateTime) AS CHAR(2)) AS VARCHAR(2)))
>
TRIM(CAST(CAST(YEAR( { fn TIMESTAMPADD(SQL_TSI_MONTH, -6 , CURRENT_DATE) }) AS CHAR(4) ) AS VARCHAR(4))) || '-' ||
TRIM(CAST(CAST(MONTH( { fn TIMESTAMPADD(SQL_TSI_MONTH, -6 , CURRENT_DATE) }) AS CHAR(2) ) AS VARCHAR(2)))
group by p.ProductCode, p.PRODUCTNAME
不包括范围内的订单。 而我想包括它们 希望你理解
由于 千斤顶
答案 0 :(得分:1)
我发现在我的应用程序中格式化数据更容易。使用SQL选择所需的数据;使用JDBC将该数据提取到程序中的变量中(例如,使用ResultSet.getDate()获取日期列的值);使用Java库根据需要格式化数据(例如,使用SimpleDateFormat格式化日期数据)。
要了解如何使用ResultSet方法,例如getDate:http://docs.oracle.com/javase/7/docs/api/java/sql/ResultSet.html#getDate(int)
要了解如何使用SimpleDateFormat:http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html