10

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

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

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

4 回答 4

16

你不应该TO_DATE在约会时激活

sysdate已经是一个日期,当您将TO_DATE它作为第一个参数运行时,您会使 Oracle 隐式将其转换为一个字符串,根据该字符串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))
于 2013-04-03T05:22:13.323 回答
6

如果插入的最后一个字段是日期类型字段,则不需要对 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'));
于 2013-04-03T05:21:56.610 回答
1

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

于 2013-04-03T07:30:13.427 回答
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);
于 2019-10-29T21:59:50.897 回答