如何使用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'相同。
答案 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);