oracle 中将系统时间转换为毫秒的sql 怎么写?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 中将系统时间转换为毫秒的sql 怎么写?相关的知识,希望对你有一定的参考价值。

参考技术A 这个问题。。。。
给你个详细的回答吧 以后就不再担忧这方面的任何问题

Oracle计算时间差表达式

--获取两时间的相差豪秒数
select ceil((To_date('2008-05-02 00:00:00' , 'yyyy-mm-dd hh24-mi-ss') - To_date('2008-04-30 23:59:59' , 'yyyy-mm-dd hh24-mi-ss')) * 24 * 60 * 60 * 1000) 相差豪秒数 FROM DUAL;
/*
相差豪秒数
----------
86401000
1 row selected
*/

--获取两时间的相差秒数
select ceil((To_date('2008-05-02 00:00:00' , 'yyyy-mm-dd hh24-mi-ss') - To_date('2008-04-30 23:59:59' , 'yyyy-mm-dd hh24-mi-ss')) * 24 * 60 * 60) 相差秒数 FROM DUAL;
/*
相差秒数
----------
86401
1 row selected
*/

--获取两时间的相差分钟数
select ceil(((To_date('2008-05-02 00:00:00' , 'yyyy-mm-dd hh24-mi-ss') - To_date('2008-04-30 23:59:59' , 'yyyy-mm-dd hh24-mi-ss'))) * 24 * 60) 相差分钟数 FROM DUAL;
/*
相差分钟数
----------
1441
1 row selected
*/

--获取两时间的相差小时数
select ceil((To_date('2008-05-02 00:00:00' , 'yyyy-mm-dd hh24-mi-ss') - To_date('2008-04-30 23:59:59' , 'yyyy-mm-dd hh24-mi-ss')) * 24) 相差小时数 FROM DUAL;
/*
相差小时数
----------
25
1 row selected
*/

--获取两时间的相差天数
select ceil((To_date('2008-05-02 00:00:00' , 'yyyy-mm-dd hh24-mi-ss') - To_date('2008-04-30 23:59:59' , 'yyyy-mm-dd hh24-mi-ss'))) 相差天数 FROM DUAL;
/*
相差天数
----------
2
1 row selected
*/

----------------------------------------
注:天数可以2个日期直接减,这样更加方便
----------------------------------------

--获取两时间月份差
select (EXTRACT(year FROM to_date('2009-05-01','yyyy-mm-dd')) - EXTRACT(year FROM to_date('2008-04-30','yyyy-mm-dd'))) * 12 +
EXTRACT(month FROM to_date('2008-05-01','yyyy-mm-dd')) - EXTRACT(month FROM to_date('2008-04-30','yyyy-mm-dd')) months
from dual;
/*
MONTHS
----------
13
1 row selected
*/

--------------------------------------
注:可以使用months_between函数,更加方便
--------------------------------------

--获取两时间年份差
select EXTRACT(year FROM to_date('2009-05-01','yyyy-mm-dd')) - EXTRACT(year FROM to_date('2008-04-30','yyyy-mm-dd')) years from dual;
/*
YEARS
----------
1
1 row selected追问

不是获取两个时间相差的毫秒数,是将系统当前时间转换为毫秒数。

参考技术B select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss ssss') from dual; 参考技术C select to_char(sysdate,'sssss') from dual
望采纳

怎么在Oracle中将时间戳转化为日期格式

参考技术A oracle中,日期转换函数有很多,常用命令如下:
to_char()命令将时间戳转换为用户规定的日期格式,如:
SELECT TO_CHAR(sysdate,'YYYY-MM-DD hh24:mi:ss') FROM DUAL;

语法:TO_CHAR(X [,format])
说明:将X按format格式转换成字符串。X可以是日期或者数字或时间戳,format是一个规定了X采用何种格式转换的格式字符串
to_date()命令可以将一个日期格式的字符串转换成date类型数据,如:
SELECT TO_DATE('2014-05-07 13:23:44','yyyy-mm-dd hh24:mi:ss') FROM DUAL;

语法:TO_DATE(C [,format])
说明:将符合format指定的特定日期格式的字符串C转换成DATE类型的数据
TO_TIMESTAMP()函数可以将一个时间格式的字符串转换成时间戳
SELECT TO_TIMESTAMP('2014-06-20 12:11:11','YYYY-MM-DD HH24:MI:SS') from dual;

语法:TO_TIMESTAMP(C [,format])
说明:将字符串C转换为一个时间戳数据类型
---to_char()命令可以将时间戳转换成字符串:
select to_char( TO_TIMESTAMP('2014-06-20 12:11:11','YYYY-MM-DD HH24:MI:SS'),'YYYY-MM-DD HH24:MI:SS') from dual;
当需要进行两个日期的比较时,不需要比较时间,可采用trunc()命令来截取日期

SQL> select to_char( trunc(sysdate), 'YYYY-MM-DD HH24:MI:SS') from dual;
SQL> select to_char( sysdate, 'YYYY-MM-DD HH24:MI:SS') from dual;
比较两句的运行结果,可以看到差别。本回答被提问者采纳

以上是关于oracle 中将系统时间转换为毫秒的sql 怎么写?的主要内容,如果未能解决你的问题,请参考以下文章

怎么在Oracle中将时间戳转化为日期格式

如何在 Oracle 中将毫秒转换为 hh mm ss 格式

在 T-SQL 中将以毫秒为单位的 Epoch 转换为日期

如何在Oracle中将时间戳转化为日期格式

在Android中将日期和时间转换为毫秒

如何在 Python 中将日期时间对象转换为自纪元(unix 时间)以来的毫秒数?