注册
关于插入公元前的日期时间问题
专栏/滴水藏海/ 文章详情 /

关于插入公元前的日期时间问题

yuao 2021/09/17 2603 4 0
摘要 本文通过实践对比达梦和 Oracle 在关于插入公元前日期时间问题上的不同表现。

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;

image.png

select to_char(mytime,'syyyy-mm-dd hh24:mi:ss') from test;

image.png

直接查询字段数据,达梦默认会显示公元前的时间:

image.png

Oracle表现:

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;

image.png

直接查询字段数据,Oracle 默认不会显示公元前的时间:

image.png

结论:
达梦和 Oracle 的 Timestamp 类型都支持插入公元前的日期时间,只是在插入方式上达梦更加方便,可以将日期时间当做字符串进行插入,系统内部会自动进行类型转换;而 Oracle 对于日期时间类型则检查更为严格,必须将日期时间字符串进行 to_timestamp 转型才可以。
直接查询字段数据时,达梦默认会显示公元前的时间,而 Oracle 默认不会显示公元前的时间。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服