问下大家oracle中to_timestamp和to_date什么区别啊?

 我来答
freechan10
2019-11-14 · TA获得超过2.9万个赞
知道小有建树答主
回答量:263
采纳率:68%
帮助的人:12.7万
展开全部

一、区别:

1)由于oracle中date类型只支持到秒,不支持到毫秒,所以to_date()不能取到毫秒。

2)如果要取到毫秒,oracle 9i以上版本,可以使用timestamp类型,

timestamp是date的扩展类型,能支持到毫秒,毫秒的显示精度是6位,不过有效位是3位,即最大值达到999,满1000ms就进为1s。

操作演示示例如下:

1、创建测试表,create table test_date(v_date varchar2(100));

2、插入测试数据,

insert into test_date values('20190101 12:00:05');

insert into test_date values('20191205 00:05:22');

insert into test_date values('20191110 11:11:51');

3、执行to_date语句sql,

select v_date, to_date(v_date,'yyyymmdd hh24:mi:ss') v_date2 from TEST_DATE t

4、执行to_timestamp语句sql,

select v_date, to_timestamp(v_date,'yyyymmdd hh24:mi:ss') v_date2 from TEST_DATE t;

badkano
推荐于2017-10-06 · 知道合伙人体育行家
badkano
知道合伙人体育行家
采纳数:144776 获赞数:885365
团长

向TA提问 私信TA
展开全部

可以按如下理解:

date类型是Oracle常用的日期型变量,时间间隔是秒。两个日期型相减得到是两个时间的间隔,注意单位是“天”。

timestamp是DATE类型的扩展,可以精确到小数秒(fractional_seconds_precision),可以是 0to9,缺省是6。两个timestamp相减的话,不能直接的得到天数,而是得到,多少天,多少小时,多少秒等。

举例如下:

to_date:

select to_date('2016-01-01 00:00:00','yyyy-mm-dd hh24:mi:ss')-sysdate from dual;

结果:

to_timestamp:

select to_timestamp('2016-01-01 00:00:00','yyyy-mm-dd hh24:mi:ss')-systimestamp from dual;

结果:

说明:

当使用date和timestamp类型的时候,选择是很清楚的。可以随意处置date和timestamp类型。当试图转换到更强大的timestamp的时候,需要注意,它们既有类似的地方,更有不同的地方,而足以造成破坏。两者在简洁和间隔尺寸方面各有优势,请合理地选择。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lxr_303
2012-10-19 · TA获得超过473个赞
知道小有建树答主
回答量:875
采纳率:0%
帮助的人:514万
展开全部
没有实质区别,to_timestamp 可以指定更加具体的时间例如 ‘ 2010-12-18 14:14:15.00005’
追问
为啥select to_timestamp(sysdate) from dual 时 截取到的时间为19-10月-12 12.00.00 上午 这个和trunc截取不是一样的效果么
追答
是一样的吧,timestamp只是表示的时间更精确了而已,别的和date类型的一样
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式