java createSQLQuery().list()返回日期格式没有时分秒的解决方法(转)

java createSQLQuery().list()返回日期格式没有时分秒的解决方法(转)

J2EE项目中用使用Date类型不显示时分秒的解决方法

2010-04-21 21:35:00|  分类: java技术 |字号 订阅

  昨天,阿堂(网络时空)在开发web项目中,发现提取Oracle中某几个Date类型的字段时,发现提出来的Date型值,只有“年月日”,没有“时分秒”显示出来,实际业务中,是要求页面上显示的日期要求是有“年月日是分秒”的。这里说明一下,我是用session.createSQLQuery(sql).list()来返回值的,反回的值类型是List(Object[]).虽然,我是用的ssh,由于此处的sql对应的业务情况涉及到复杂的多表查询,如果是用hibernate来作映射的话,难度就非常大了,而且编码会带来很大的难度。。所以这里就委而用原生态的sql或者说标准sql来返回值了。

具体详细问题如下

在用ssh中

对于如下语句

session.createSQLQuery(sql).list();

查询,返回一个List<Object[]>

在对List循环中

我发现 如 显示日期类型的值时,只显示了“年月日”,没有显示“时分秒”

for(Object[] obj:session.createSQLQuery(sql).list())

{

...

System.out.println("收单日期是 "+(Date)obj[5]);

//只显示了年月日,没有显示"时分秒"了 如2010-03-01

//oracle数据表中对应字段的值,实际上是03-01-2010 16:31:14

...

}

折腾了半天后,经网友提醒,和本人的耐心测试,终于找到了解决方法

方法一

将Oracel数据库对应表中“收单时间的字段”receive_sheet_time,由原来的Date类型改为timestamp

然后,在java程序中,由 (java.util.timestamp)obj[5] 这样返回值,就会显示有“年月月时分秒“了。

如 2010-03-01 14:39:17

方法二

OracleOracel数据库对应表中“收单时间的字段”receive_sheet_time,字段继续保持Date类型不变

将上述sql语句中,返回 “收单日期的字段”receive_sheet_time ,变为

to_char(loading.receive_sheet_time,‘YYYY-MM-DD hh24:mi:ss‘) as receive_sheet_time

作为字符串类型来返回值,

然后在java程序中用,由 (String)obj[5] 这样返回值,就会显示有“年月月时分秒“了。

如 2010-03-01 14:39:17

附:至于Date和timestamp类型的区别,我就不多说,朋友们可以到网上一搜就知道了

原来的sql

SELECT load_point,

dispatch_no,

schedule_no,

truck_no,

trans_date,

trans_company_name,

departure_time,

trans_company_code,

receive_sheet_time,

dispatch_sheet_time,

loading_time,

SUM(expected_qty) AS expected_qty,

SUM(allocate_qty) AS allocate_qty,

SUM(real_qty) AS real_qty

FROM (SELECT odetail.load_point,

dispatch.dispatch_no,

odetail.Schedule_No,

dispatch.trans_company_code,

dispatch.truck_no,

TO_CHAR(dispatch.trans_date, ‘YYYY-MM-DD‘) AS trans_date,

dispatch.trans_company_name,

odetail.expected_qty,

odetail.allocate_qty,

odetail.real_qty,

loading.receive_sheet_time,

loading.dispatch_sheet_time,

loading.loading_time,

loading.departure_time

FROM t_dispatch         dispatch,

t_order_detail     odetail,

t_dispatch_detail  tdetail,

t_dispatch_loading loading

WHERE dispatch.dispatch_no = tdetail.dispatch_no

AND odetail.order_no = tdetail.order_no

AND odetail.order_line_no = tdetail.order_line_no

AND loading.dispatch_no = dispatch.dispatch_no

AND loading.load_point = odetail.load_point

AND dispatch.status <> 99

AND NVL(dispatch.b_cancel, 0) = 0)

WHERE 1 = 1

AND TO_CHAR(departure_time, ‘YYYY-MM-DD HH24:MI:SS‘) >=

‘2010-04-07 00:00:07‘

AND TO_CHAR(departure_time, ‘YYYY-MM-DD HH24:MI:SS‘) <=

‘2010-04-07 23:59:07‘

GROUP BY load_point,

dispatch_no,

schedule_no,

truck_no,

trans_date,

trans_company_name,

departure_time,

trans_company_code,

receive_sheet_time,

dispatch_sheet_time,

loading_time

ORDER BY dispatch_no, schedule_no, load_point

新sql语句

(下述sql语句红色部分,就是我将返回的日期类型,转换为to_char类型返回了。。用方法一时,用原来的sql就行了)

SELECT load_point,

dispatch_no,

schedule_no,

truck_no,

trans_date,

trans_company_name,

departure_time,

trans_company_code,

receive_sheet_time,

dispatch_sheet_time,

loading_time,

SUM(expected_qty) AS expected_qty,

SUM(allocate_qty) AS allocate_qty,

SUM(real_qty) AS real_qty

FROM (SELECT odetail.load_point,

dispatch.dispatch_no,

odetail.Schedule_No,

dispatch.trans_company_code,

dispatch.truck_no,

TO_CHAR(dispatch.trans_date, ‘YYYY-MM-DD‘) AS trans_date,

dispatch.trans_company_name,

odetail.expected_qty,

odetail.allocate_qty,

odetail.real_qty,

to_char(loading.receive_sheet_time,‘YYYY-MM-DD hh24:mi:ss‘) as receive_sheet_time,

to_char(loading.dispatch_sheet_time,‘YYYY-MM-DD hh24:mi:ss‘) as dispatch_sheet_time,

to_char(loading.loading_time,‘YYYY-MM-DD hh24:mi:ss‘) as loading_time,

to_char(loading.departure_time,‘YYYY-MM-DD hh24:mi:ss‘) as departure_time

FROM @DBUSer.t_dispatch         dispatch,

@DBUSer.t_order_detail     odetail,

@DBUSer.t_dispatch_detail  tdetail,

@DBUSer.t_dispatch_loading loading

WHERE dispatch.dispatch_no = tdetail.dispatch_no

AND odetail.order_no = tdetail.order_no

AND odetail.order_line_no = tdetail.order_line_no

AND loading.dispatch_no = dispatch.dispatch_no

AND loading.load_point = odetail.load_point

AND dispatch.status <> 99

AND NVL(dispatch.b_cancel, 0) = 0)

WHERE 1 = 1

@var1

GROUP BY load_point,

dispatch_no,

schedule_no,

truck_no,

trans_date,

trans_company_name,

departure_time,

trans_company_code,

receive_sheet_time,

dispatch_sheet_time,

loading_time

ORDER BY dispatch_no, schedule_no, load_point

时间: 2024-10-06 20:18:29

java createSQLQuery().list()返回日期格式没有时分秒的解决方法(转)的相关文章

java createSQLQuery().list()返回日期格式没有时分秒的解决方法

方法一 将Oracel数据库对应表中“收单时间的字段”receive_sheet_time,由原来的Date类型改为timestamp 然后,在java程序中,由 (java.util.timestamp)obj[5] 这样返回值,就会显示有“年月月时分秒“了. 如 2010-03-01 14:39:17 方法二 OracleOracel数据库对应表中“收单时间的字段”receive_sheet_time,字段继续保持Date类型不变 将上述sql语句中,返回 “收单日期的字段”receive_

关于时间的操作(Java版)——将毫秒转换为年月日时分秒

第一种方式: import java.util.Calendar; import java.util.TimeZone; public class Test { /** * 将毫秒转换为年月日时分秒 * * @author GaoHuanjie */ public String getYearMonthDayHourMinuteSecond(long timeMillis) { Calendar calendar = Calendar.getInstance(TimeZone.getTimeZo

JavaScript基础 Date(日期字符串 包括时分秒)

镇场诗: 清心感悟智慧语,不着世间名与利.学水处下纳百川,舍尽贡高我慢意. 学有小成返哺根,愿铸一良心博客.诚心于此写经验,愿见文者得启发.------------------------------------------ code: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=ut

PDO 查询mysql返回字段整型变为String型解决方法

PDO 查询mysql返回字段整型变为String型解决方法 使用PDO查询mysql数据库时.运行prepare,execute后,返回的字段数据全都变为字符型. 比如id在数据库中是Int的.查询后返回是String型. 对于php这样的弱类型的语言.影响不大. 在做API返回数据时.假设类型与数据库不一致,对于java和Objective C这些强类型,影响就非常大了. 解决方法: <?php $pdo = new PDO($dsn, $user, $pass, $param); // 在

SpringMVC中使用@ResponseBody注解返回值,Ajax取得中文乱码解决方法

Spring使用AnnotationMethodHandlerAdapter的handleResponseBody方法, AnnotationMethodHandlerAdapter使用request header中"Accept"的值和messageConverter支持的MediaType进行匹配,然后会用"Accept"的第一个值写入 response的"Content-Type".一般的请求都是通过浏览器进行的,request heade

【 D3.js 进阶系列 — 1.2 】 读取 CSV 文件时乱码的解决方法

在 D3 中使用 d3.csv 读取 CSV 文件时,有时会出现乱码问题.怎么解决呢? 1. 乱码问题 使用 d3.csv 读取 xxx.csv 文件时,如果 xxx.csv 文件使用的是 UTF-8 编码,不会有什么问题.当然,个人认为尽量使用 UTF-8 编码,可以在同一编码内使用各国文字. 但是,如果 xxx.csv 文件使用的是 utf-8 编码,使用 Microsoft Excel 打开的时候,可能会出现乱码,因为国内的 Excel 默认使用 GB2312 打开,而且在打开的时候不能选

Java虚拟机系列(三)---内存溢出情况及解决方法

因为Java虚拟机内存有堆内存.方法区.虚拟机栈.本地方法栈和程序计数器五部分组成,其中程序计数器是唯一一块不会发生内存溢出异常的内存区,所以只有四类内存区可能发生内存溢出异常,其中虚拟机栈和本地方法栈都是Java方法执行的内存模型,所以它们的异常发生情况几乎相同,另外,在方法区中.又有一块内存是常量池,所以内存溢出的情况可分为Java堆溢出.虚拟机栈和本地方法栈溢出.方法区和运行时常量池溢三种情况. 一.Java堆溢出 1.产生的原因:因为堆中存放的是对象实例和数组,所以当对象数量>最大堆容量

在ASP.NET中,IE与Firefox下载文件带汉字名时乱码的解决方法

解决办法: HttpContext.Current.Response.Clear(); HttpContext.Current.Response.Buffer = true; HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312"); HttpContext.Current.Response.Charset = "gb2312"; HttpCon

excel2003出现“向程序发送命令时出现错误”解决方法

电脑已经预装了office2010,因为想要学习 <Excel 图标之道>,安装了Excel2003,刚刚安装好,打开出现“向程序发送命令时出现错误”,虽然点击确定就可以用了,可总是觉得不爽,网上找了相关方法, 1. 在资源管理器中进入“C:\Documents and Settings\Administrator\Application Data\Microsoft\Templates”目录,删除其中的“Normal.dot”公用模板文件(可能还有个隐藏的编辑中的文件,一并删除),再重新启动