我们都知道date和timestamp都是对日期和时间的表示,只是两种类型的精确度不同,前者精确到秒,后者精确到小数秒(fractional_se

我们都知道date和timestamp都是对日期和时间的表示,只是两种类型的精确度不同,前者精确到秒,后者精确到小数秒(fractional_seconds_precision),可以是 0 to 9,缺省是6。

但是对date类型的运算很简单,有很多函数可用来处理;而两个timestamp的差则是很直观地显示为多少天+多少小时+多少分钟+多少秒+多少小数秒,,

SQL> create table test (T1 TIMESTAMP(6),

2 T2 TIMESTAMP(6));

表已创建。

SQL> insert into test values(

2 to_timestamp('2006-01-01 12:10:10.1','yyyy-mm-dd hh24:mi:ss.ff'),

3 to_timestamp('2006-01-01 12:20:10.2','yyyy-mm-dd hh24:mi:ss.ff'));

已创建 1 行。

SQL>

SQL> insert into test values(

2 to_timestamp('2006-01-01 12:10:10.1','yyyy-mm-dd hh24:mi:ss.ff'),

3 to_timestamp('2006-01-02 12:20:10.2','yyyy-mm-dd hh24:mi:ss.ff'));

已创建 1 行。

SQL>

SQL> insert into test values(

2 to_timestamp('2006-01-01 12:10:10.1','yyyy-mm-dd hh24:mi:ss.ff'),

3 to_timestamp('2006-01-02 13:40:20.2','yyyy-mm-dd hh24:mi:ss.ff'));

已创建 1 行。

SQL> commit;

提交完成。

SQL>

两个timestamp的差则是很直观地显示为多少天+多少小时+多少分钟+多少秒+多少小数秒:

SQL> select t2-t1 from test;

+000000000 00:10:00.100000

+000000001 00:10:00.100000

+000000001 01:30:10.100000

SQL>

但要简单地转化为某一个精度却比较麻烦,用类似date类型的处理方法是不行的。如转化为分:

SQL> select 1440*(t2-t1) from test;

+000000010 00:02:24.000000000

+000001450 00:02:24.000000000

+000001530 04:02:24.000000000

SQL>

发现结果根本不是原先想要的,而是在原先的“多少天+多少小时+多少分钟+多少秒+多少小数秒”的每一项都乘以1440再进行进制处理。

最容易理解的就是用substr将两个timestamp的差进行分割转化处理:

SQL>  SELECT substr((t2-t1),instr((t2-t1),' ')+7,2)         seconds,

2      substr((t2-t1),instr((t2-t1),' ')+4,2)         minutes,

3     substr((t2-t1),instr((t2-t1),' ')+1,2)         hours,

4     trunc(to_number(substr((t2-t1),1,instr(t2-t1,' '))))  days,

5     trunc(to_number(substr((t2-t1),1,instr(t2-t1,' ')))/7) weeks

6 FROM test;

SECO MINU HOUR DAYS WEEKS

---- ---- ---- ---------- ----------

00 10 00 0 0

00 10 00 1 0

10 30 01 1 0

或者利用自定义函数来实现将天数转换成“天时分秒”格式:

CREATE OR REPLACE FUNCTION F_DAYS2STR(P_DAYS IN NUMBER DEFAULT 0)

RETURN VARCHAR2 IS

--Ver:1.0

--Created by xsb on 2005-05-26

--For: 将天数转换成天时分秒格式

DAYS NUMBER := NVL(P_DAYS, 0);

VD NUMBER; --天

VH NUMBER; --小时

VM NUMBER; --分

VS NUMBER; --秒

RESULT VARCHAR2(100); --返回值

BEGIN

VD := TRUNC(DAYS);

VH := TRUNC((DAYS - VD) * 24);

VM := TRUNC((DAYS - VD - VH / 24) * 24 * 60);

VS := TRUNC((DAYS - VD - VH / 24 - VM / 24 / 60) * 24 * 60 * 60);

SELECT DECODE(VD, 0, '', VD || '天') || DECODE(VH, 0, '', VH || '小时') ||DECODE(VM, 0, '', VM || '分') || DECODE(VS, 0, '', VS || '秒') INTO RESULT FROM DUAL;

RETURN(RESULT);

END;

SQL>

如果最后结果的精度要求不高时(在分或分以上时),就可以先将timestamp转化为date再结算,这样就简单多了:

SQL> select (to_date(to_char(t2,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss'

)-to_date(to_char(t1,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss'))*24*60

2 from test;

10

1450

1530.16667

date转换为timestamp:

SELECT CAST(sysdate AS TIMESTAMP) from dual;

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

timestamp 6 mysql_Oracle timestamp(6)运用相关推荐

  1. mysql timestamp _mysql之TIMESTAMP(时间戳)用法详解

    一.TIMESTAMP的变体 TIMESTAMP时间戳在创建的时候可以有多重不同的特性,如: 1.在创建新记录和修改现有记录的时候都对这个数据列刷新: TIMESTAMP DEFAULT CURREN ...

  2. pyarrow.lib.ArrowInvalid: Casting from timestamp[us] to timestamp[ns] would result in out of bounds

    项目场景: 从oracle读取数据后转为dataframe形式,然后通过to_feather()存入ft文件 之后通过pandas.read_feather()从文件中读取dataframe数据 数据 ...

  3. mysql timestamp 类型_MySQL timestamp类型

    在本教程中,您将了解MySQL TIMESTAMP和TIMESTAMP列的功能,如使用时间戳自动初始化和更新. MySQL TIMESTAMP简介 MySQL TIMESTAMP是一种保存日期和时间组 ...

  4. mysql timestamp格式化_mysql TIMESTAMP(时间戳)详解

    TIMESTAMP的变体 1,TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 在创建新记录和修改现有记录的时候都对这个数 ...

  5. java timestamp 使用_Java Timestamp 类的使用(转)

    怎么把一个java.util.Date类型转化成java.sql.Timestamp类型呢? 很简单,我们可以这样声明   Timestamp  ts=new Timestamp(new Date() ...

  6. python timestamp转date_python timestamp和datetime之间转换详解

    做开发中难免时间类型之间的转换, 最近就发现前端js和后端django经常要用到这个转换, 其中jsDate.now()精确到毫秒,而Python中Datetime.datetime.now()是精确 ...

  7. mysql timestamp json_mysql中timestamp,datetime,int类型的区别与优劣

    mysql中timestamp,datetime,int类型的区别与优劣 int 1. 占用4个字节 2. 建立索引之后,查询速度快 3. 条件范围搜索可以使用使用between 4. 不能使用mys ...

  8. mysql timestamp 用法_MYSQL timestamp用法

    问题来源 在业务系统中,有时候想要知道用户最后一次活动距离现在的时间.记得mysql是有这样的字段的,可以直接在一条记录更新时,自动更新时间.上网查了查,找到了,是timestamp类型. 用法 在表 ...

  9. oracle查询timestamp范围,Oracle TIMESTAMP数据类型

    TIMESTAMP数据类型: Oracle定义语法: TIMESTAMP [(fractional_seconds_precision)] fractional_seconds_precision 的 ...

最新文章

  1. 小鱼天气android,小鱼天气(cn.microsoft.cig.uair) - 1.3.14 - 应用 - 酷安
  2. gpu浮点计算能力floaps_聊聊 GPU 峰值计算能力
  3. ML之MIC:利用有无噪音的正余弦函数理解相关性指标的不同(多图绘制Pearson系数、最大信息系数MIC)
  4. Logstash 安装及简单实用(同步MySql数据到Elasticsearch)
  5. 直播预告 | AAAI 2022论文解读:融入知识图谱的分子对比学习
  6. ActiveMQ 持久化讯息数据库信息
  7. python中int是什么的缩写_python中int是什么类型
  8. 诗与远方:无题(二十六)- 曾经给一个妹子写的一首诗
  9. python语法错误怎么办_python错误处理详解
  10. Spring+SpringMVC+MyBatis+easyUI整合基础篇(一)项目简述及技术选型介绍
  11. 吸猫就吸Tomcat之Pipeline-Valve巧妙设计
  12. asp.net 读写 XML 小结
  13. torch 默认参数初始化_pytorch的初始化方式总结
  14. 【Log4cpp】项目日志Log4cpp的简单使用
  15. 25个JAVA 机器学习工具包
  16. factoryio-2.3.1虚拟仿真实验室软件
  17. xmind怎样画流程图_【工作流程图】如何用xmind做流程图
  18. 100m光纤测速多少正常_100M的光纤电信宽带,用手机测速时,为什么只有40M?
  19. 关于阿里巴巴编程规范
  20. python导入mysqldb_Python导入MySQLdb库

热门文章

  1. Ubuntu怎么查看电脑配置(ubuntu怎么查看系统配置)
  2. 2019 Multi-University Training Contest 9 1007 Rikka with Travels
  3. Ubuntu系统中查看电脑驱动信息
  4. 【H5】html5的新增的标签和废除的标签
  5. 低保真原型vs高保真原型,哪一种更适合你的设计?
  6. 我的时间管理——计划与总结的重要性
  7. 攻防世界 [简单] 凯撒大帝在培根里藏了什么
  8. Java语言的特点有哪些?你对Java认知有多少?
  9. js 如何判断两个对象相等
  10. 中国最美的100句诗