VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2138|回复: 8

java程序中向oracle插入系统时间

[复制链接]

2

主题

6

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
发表于 2020-2-12 10:00:01 | 显示全部楼层 |阅读模式
向oracle数据库插入一条数据,包括日期类型,但是得不到时间,只能得到日期!在dao程序里用到的程序为:
pstmt.setDate(new java.sql.Date(new java.util.Date().getTime()));
pstmt.executeUpdate();
在数据库中查询得到的数据为:
2        127.0.0.1        2017-01-04 00:00:00.0
3        127.0.0.1        2017-01-04 00:00:00.0
4        127.0.0.1        2017-01-04 00:00:00.0
5        127.0.0.1        2017-01-04 00:00:00.0
问题:为什么时间出现为:00:00:00:呢?是不是还有别的好的方法向数据库中插入系统的时间与日期
回复

使用道具 举报

0

主题

71

帖子

50.00

积分

新手上路

Rank: 1

积分
50.00
发表于 2020-4-8 21:45:01 | 显示全部楼层
需要

to_char(java.util.Date().getTime(),'YYYY-MM-DD HH24:MI:SS')

比如:
String sqlStr = "insert into " + tableName
                                + " (name,age,height,add_date) values(?,?,?,to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'))";
       
pstmt = con.prepareStatement(sqlStr);
                        pstmt.setString(1, client.getName());
                        pstmt.setInt(2, client.getAge());
                        pstmt.setInt(3, client.getHeight());
                        //pstst.setString(4,sysdate);
                       
                        pstmt.executeUpdate();
回复

使用道具 举报

2

主题

6

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
 楼主| 发表于 2020-4-10 16:30:01 | 显示全部楼层
多谢whbilly;
  从你的程序中是把它转换为字符串,再存入到数据库中,那在建表时是把它建为varchar2类型的吗?用你的方法我在jbuilder中编绎出错,
我写的语句为:
pstmt.setDate(2,to_char(new java.util.Date().getTime(),'YYYY-MM-DD HH24:MI:SS'));
错误如下:
"Dao.java": unclosed character literal at line 146, column 67
"Dao.java": unclosed character literal at line 146, column 89
请帮忙看一下呀,多谢

回复

使用道具 举报

2

主题

6

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
 楼主| 发表于 2020-4-11 08:45:02 | 显示全部楼层
我也试过把字段的属性改为varchar2类型, 这语句
  pstmt.setString(2,to_char(new java.util.Date().getTime(),"YYYY-MM-DD HH24:MI:SS"));
jbuilder中说"
Dao.java": cannot find symbol; symbol  : method to_char(long,java.lang.String), location: class dao.Dao at line 146, column 30
到底是怎么回事呀!多谢!
回复

使用道具 举报

0

主题

13

帖子

13.00

积分

新手上路

Rank: 1

积分
13.00
发表于 2020-5-14 20:45:01 | 显示全部楼层
1. 先to_char,然后再to_date
回复

使用道具 举报

0

主题

13

帖子

13.00

积分

新手上路

Rank: 1

积分
13.00
发表于 2020-5-15 08:15:01 | 显示全部楼层
还有这样的需求觉得比较怪, 插入系统时间可以使用 Sysdate的呀.

这样的话,需要Java所在的机器的时间和Oracle所在机器的时间一致.
回复

使用道具 举报

0

主题

71

帖子

50.00

积分

新手上路

Rank: 1

积分
50.00
发表于 2020-5-16 01:30:01 | 显示全部楼层
建议使用sysdate,不要用getdate()
以下是jsp的原代码,供参考

String sqlStr = "insert into " + tableName
+ " (name,age,height,add_date) values(?,?,?,to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'))";

pstmt = con.prepareStatement(sqlStr);
pstmt.setString(1, client.getName());
pstmt.setInt(2, client.getAge());
pstmt.setInt(3, client.getHeight());
//pstst.setString(4,sysdate);

pstmt.executeUpdate();
回复

使用道具 举报

0

主题

6

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-5-25 00:15:02 | 显示全部楼层
应该使用java.sql.Timestamp类型的,而不是使用java.sql.Date类型
回复

使用道具 举报

2

主题

6

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
 楼主| 发表于 2020-6-18 17:00:01 | 显示全部楼层
多谢以上的回答,用楼上的一种方法比较的好,就是timestamp,不过我在sql里面的运用了order by time,也是就是按时间排序,在oracle里可以排序,但是在jsp的显示页面怎么不是按时间排序的呢?多谢回答!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表