在oracle中插入系统日期

时间:2013-04-03 05:10:47

标签: oracle

如何使用oracle 10g将系统日期以dd / mm / yyyy插入到表中?

使用以下查询时,它会将系统日期插入03/04/0013。我需要03/04/2013。你能帮我解决这个问题吗?

insert into GtTable 
values('111','Name',300,'Tour',to_date('02/04/2012','DD/MM/YYYY'),to_date(sysdate,'DD/MM/YYYY'));

但直接插入'02 / 04/2012'时,它接受与'02 / 04/2012'相同。

4 个答案:

答案 0 :(得分:13)

您不应在日期

上激活TO_DATE

sysdate已经是一个日期,当您以TO_DATE作为第一个参数运行时,您会根据NLS_DATE_FORMAT隐式将其转换为字符串,在您的情况下可能包含YY而非YYYY

oracle中的日期是一个代表日期和时间的数字,它没有“格式”,如果你想插入sysdate而没有你需要截断它的时间值,如下所示:

insert into GtTable 
values('111','Name',300,'Tour',to_date('02/04/2012','DD/MM/YYYY'),trunc(sysdate))

答案 1 :(得分:4)

如果插入的最后一个字段是日期类型字段,则在SYSDATE上不需要任何转换,因此,以下内容应该没问题:

insert into GtTable 
values('111', 'Name', 300, 'Tour', to_date('02/04/2012','DD/MM/YYYY'), sysdate);

但如果它是varchar字段,则以下内容应该有效:

insert into GtTable 
values('111', 'Name', 300, 'Tour', to_date('02/04/2012','DD/MM/YYYY'), to_char(sysdate, 'dd/mm/yyyy'));

答案 2 :(得分:0)

我认为显示的格式是由于环境参数。 TO_CHAR(SYSDATE,'DD / MM / YYYY')CAN LET您将系统日期作为DD / MM / YYYY插入,但是,它不再是日期类型。

答案 3 :(得分:0)

对我有用的解决方案如下

insert into method (id,name,created_by,updated_by, created_at, updated_at) values (1,'GET',0,0,TO_CHAR(SYSDATE,'DD/MM/YYYY hh:mm:ss'),null);