在Derby DBMS中,如何用零填充数字?

时间:2013-11-23 04:14:35

标签: sql derby

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

不包括范围内的订单。 而我想包括它们 希望你理解

由于 千斤顶

1 个答案:

答案 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