Timestamp 类型可以插入负值日期时间,负值表示公元前的日期时间,达梦与 Oracle 在插入公元前日期时间的方法上是相同的,需要在年份掩码前加前缀 s 表示公元前 BC
create table test(mytime timestamp);
insert into test values('2021-01-01 00:00:00');
insert into test values('-2021-01-01 00:00:00');
commit;
select to_char(mytime,'yyyy-mm-dd hh24:mi:ss') from test;
select to_char(mytime,'syyyy-mm-dd hh24:mi:ss') from test;
直接查询字段数据,达梦默认会显示公元前的时间:
create table test(mytime timestamp);
insert into test values(to_timestamp('2021-01-01 00:00:00','syyyy-mm-dd hh24:mi:ss'));
insert into test values(to_timestamp('-2021-01-01 00:00:00','syyyy-mm-dd hh24:mi:ss'));
commit;
select to_char(mytime,'yyyy-mm-dd hh24:mi:ss') from test;
select to_char(mytime,'syyyy-mm-dd hh24:mi:ss') from test;
直接查询字段数据,Oracle 默认不会显示公元前的时间:
结论:
达梦和 Oracle 的 Timestamp 类型都支持插入公元前的日期时间,只是在插入方式上达梦更加方便,可以将日期时间当做字符串进行插入,系统内部会自动进行类型转换;而 Oracle 对于日期时间类型则检查更为严格,必须将日期时间字符串进行 to_timestamp 转型才可以。
直接查询字段数据时,达梦默认会显示公元前的时间,而 Oracle 默认不会显示公元前的时间。
文章
阅读量
获赞