在oracle数据库插入日期时格式不对

sql:insertintoHrmStatusHistory(resourceid,changedate,oldjobtitleid,changereason,type_... sql:
insert into HrmStatusHistory
(resourceid, changedate, oldjobtitleid, changereason, type_n, operator)
values
(365, to_date('2014-07-01', 'YYYY-MM-DD'), 134, 'DML自动更新', 2, 1)

但是通过sql查询这个changedate,显示的却是: 01-7月 -14

是什么问题啊?
展开
 我来答
水划过
高粉答主

2019-09-12 · 繁杂信息太多,你要学会辨别
知道答主
回答量:107
采纳率:100%
帮助的人:1.6万
展开全部

在oracle数据库插入日期时格式不对,修改办法如下:

1、使用具有日期和时间格式的表来查询相关数据。

2、查询指定日期(2019/03/04)的数据。 默认值是周期与0点0分开计算。

3、如果要指定开始计算的次数,则上述句点语法将更改为OUT_PROCESS_TIME>TO_DATE('2019/03/04 10:00:00','YYYY/MM/DD HH24/MI/SS')。

4、第一步是找到定义的时间单位

5、在数据库中找到此时间函数的定义。 这是一个参数集。 将使用数据库的相关整数转换。 它通常位于sys_base表中。

6、work_time<14*60/10,这里14表示14点,即下午2点。60是每小时60分钟设置的公共值,即上面sys_base表中的时间值。

按照上述操作,便可以解决该问题。

刺友互
高粉答主

2019-07-20 · 每个回答都超有意思的
知道答主
回答量:3979
采纳率:100%
帮助的人:72.8万
展开全部

1、我们以一个一个带有日期和时间格式的表来进行相关数据查询。

2、查询指定日期(2019/03/04)的数据,默认是这个时期从0点0分开始计算。

3、如果要指定从几点几分开始计算,则讲上面的时间段语法修改为:OUT_PROCESS_TIME>TO_DATE('2019/03/04 10:00:00','YYYY/MM/DD HH24/MI/SS')。

4、首先要找到时间的定义单位。

5、在数据库中找到定义这个时间函数,这里是设置了一个参数,数据库的相关整数转换都会用到。一般会发在sys_base表中了。

6、work_time<14*60/10 这里14表示14时也就是下午两点,60是一小时60分钟10是设定的公共值,也就是前面sys_base表中的时间值。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tonghighly
推荐于2017-10-10
知道答主
回答量:10
采纳率:0%
帮助的人:6.2万
展开全部
应该是你的数据库中 changedate不是date类型的,而是varchar类型,所以会有这种错误,把changedate改成date类型,或直接插‘2014-07-01’
追问
听你这说,我进去看了下,CHANGEDATE	N	CHAR(10)   这代表是char类型吧?

但是为什么我在insert后,2014-07-01插入数据库后,数值变成2006了。
追答
2014-07-01要用单引号
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
海子Goahead
2014-07-01 · TA获得超过310个赞
知道小有建树答主
回答量:462
采纳率:0%
帮助的人:291万
展开全部
这是因为你查询的时候使用的操作系统环境是中文的,要想时间格式显示为英文状态,需要设置session的NLS_DATE_LANGUAGE为english,即
alter system setnls_date_language='ENGLISH';
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jamxval
2014-07-01 · TA获得超过6822个赞
知道大有可为答主
回答量:4308
采纳率:82%
帮助的人:1430万
展开全部

我们先不管如果显示,因为可能只是工具显示地有问题,我们通过 where 语句来确认它是否正确?

比如: where changedate between trunc(current_date) - 7 and trunc(current_date) + 1;


让你瞧瞧这个 bug,当格式对不上数据时它JDK并不抛出异常而是给出一个错误的日期呢。观察这个错误,看上去似乎是它看成了 "2014.-0.7-",因此解释成了 2014 年0月7日,这个0月解释成了前一年的12月,也就是2013.12.07 日。


java.text.SimpleDateFormat format = new java.text.SimpleDateFormat("yyyyMMdd");
java.util.Date date = format.parse("2014-07-01");
java.sql.Date ko = new java.sql.Date(date.getTime());
System.out.println("Date :" + ko);


结果显示的是:

Date :2013-12-07

 

因此呢,工具把数据显示出来这个过程可能有问题。就像我们未意识到 SimpleDateFormat.parse 不提醒格式错误一样。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式