Oracle处理date和timestamp的相互转化

一、date类型时间和timestamp类型时间的区别

-- date类型时间
select sysdate from dual;
-- 03-AUG-24 04.33.40
-- timestamp类型时间
select systimestamp from dual;
-- 03-AUG-24 04.33.43.539173 PM +00:00
  • date类型时间只能精确到秒,yyyy-mm-dd hh24:mi:ss
  • timestamp类型时间加入了小数秒 :yyyy-mm-dd hh24:mi:ss.ff

二、date 类型转换为 timestamp 类型

-- 使用to_timestamp将 date 或 字符型的date 转换为 timestamp

select to_timestamp(sysdate) from dual;
-- 03-AUG-24 12.00.00.000000 AM

select to_timestamp('03-AUG-24 04.33.43.539173','yyyy-mm-dd hh24:mi:ss.ff') from dual;
-- 24-AUG-03 04.33.43.539173 AM

-- 使用cast将date 转换为 timestamp
select cast(sysdate as timestamp) date_to_timestamp from dual;
--03-AUG-24 04.59.41.000000 PM

三、timestamp 类型转换为date 类型

-- 1. 使用cast将 timestamp 转换为 date
select cast(systimestamp as date) from dual;
-- 03-AUG-24
select cast(to_timestamp('03-AUG-24 04.33.43.539173','yyyy-mm-dd hh24:mi:ss.ff') as date) timestamp_to_date from dual;
-- 24-AUG-03

-- 2. 使用 + 0 将 timestamp 转换为 date
select systimestamp + 0 from dual;
-- 03-AUG-24
select to_timestamp('03-AUG-24 04.33.43.539173','yyyy-mm-dd hh24:mi:ss.ff') + 0 from dual;
-- 24-AUG-03

-- 3. 使用 to_char + to_date 将 timestamp 转换为 date
select to_char( 1722582000000 / (1000*60*60*24) + to_date('1970-01-01 08:00:00','yyyy-mm-dd hh24:mi:ss'), 'yyyy-mm-dd hh24:mi:ss' ) as datetime from dual;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值