oracle日期时间型timestamp的深入理解

1、字符型转成timestamp


代码如下:

select to_timestamp('01-10月-08 07.46.41.000000000 上午','dd-MON-yy hh:mi:ss.ff AM') 
from dual;

2、timestamp转成date型


代码如下:

select cast(to_timestamp('01-10月-08 07.46.41.000000000 上午','dd-MON-yy hh:mi:ss.ff AM') as date) timestamp_to_date
from dual;

3、date型转成timestamp


代码如下:

select cast(sysdate as timestamp) date_to_timestamp 
from dual;

4、获取timestamp格式的系统时间


代码如下:

select systimestamp from dual;

5、两date的日期相减得出的是天数,而两timestamp的日期相减得出的是完整的年月日时分秒小数秒


代码如下:

select systimestamp-systimestamp from dual; 
select sysdate-sysdate from dual;

注:所以,timestamp要算出两日期间隔了多少秒,要用函数转换一下。
6、to_char函数支持date和timestamp,但是trunc却不支持TIMESTAMP数据类型。
7、timestamp只支持秒的小数点后面六位。


代码如下:

select to_char(systimestamp, 'yyyymmdd hh24:mi:ssxff6') FROM dual;

注:ssxff6也可以为ssxff7、ssxff8、ssxff9等,但只到6有效。
8、获取系统时间的语句:


代码如下:

SELECT sysdate,systimestamp,to_char(systimestamp, 'yyyymmdd hh24:mi:ssxff6') FROM dual;

(0)

相关推荐

  • ORACLE时间函数(SYSDATE)深入理解

    加法 select sysdate,add_months(sysdate,12) from dual; --加1年 select sysdate,add_months(sysdate,1) from dual; --加1月 select sysdate,to_char(sysdate+7,'yyyy-mm-dd HH24:MI:SS') from dual; --加1星期 select sysdate,to_char(sysdate+1,'yyyy-mm-dd HH24:MI:SS') from

  • Oracle to_date()函数的用法介绍

    在Oracle数据库中,Oracle to_date()函数是我们经常使用的函数,下面就为您详细介绍Oracle to_date()函数的用法,希望可以对您有所启迪. to_date()与24小时制表示法及mm分钟的显示: 一.在使用Oracle的to_date函数来做日期转换时,很多Java程序员也许会直接的采用"yyyy-MM-dd HH:mm:ss"的格式作为格式进行转换,但是在Oracle中会引起错误:"ORA 01810 格式代码出现两次". select

  • ORACLE SQL-UPDATE、DELETE、INSERT优化和使用技巧分享

    UPDATE  1.先备份数据(安全.提高性能). 2.分批更新,小批量提交,防止锁表. 3.如果被更新的自动有索引,更新的数据量很大,先取消索引,再重新创建. 4.全表数据更新,如果表非常大,建议以创建新表的形式替代更新. DELETE 1.分批提交.减少锁表时间.减少回滚段压力. 2.大批量数据删除加上rownum<1000. 3.大批量删除,禁止中途ctrl+c,或kill调session. 4.大量数据删除后最好重建索引,分析表. INSERT 1.关闭redo log(ALTER TA

  • Oracle中TIMESTAMP的几种类型介绍与实例

    TIMESTAMP的几种类型比较 TIMESTAMP 时间戳类型,与date的区别在于,date不能精确到毫秒,而timestamp可以精确到毫秒,毫秒的位数为0-9位,默认为6位. SQL> select tp from timestamp_test; TP -------------------------------------------------------------------------------- 01-3月 -16 09.22.33.000000 上午 TIMESTAMP

  • oracle SCN跟TIMESTAMP之间转换

    Sql代码 --获取当前的SCN 复制代码 代码如下: select dbms_flashback.get_system_change_number scn1, timestamp_to_scn(sysdate) scn2 from dual; --将SCN转换成功时间 复制代码 代码如下: select to_char(scn_to_timestamp(34607271), 'yyyy-mm-dd hh24:mi:ss') chr, timestamp_to_scn(scn_to_timest

  • Oracle date如何比较大小分析

    Sql代码 复制代码 代码如下: -- Created on 2010/04/17 by NAN declare -- Local variables here i integer; v_date1 DATE; v_date2 DATE; begin -- Test statements here v_date1 := SYSDATE; v_date2 := to_date( '2008-09-08'); IF v_date1 > v_date2 THEN dbms_output.put_lin

  • oracle中UPDATE nowait 的使用方法介绍

    1.UPDATE nowait 应用以下场景:查询某条数据,并对其开启数据库事务.如果查询的当前数据没有加锁,则正确返回结果,并对当前数据加锁,如果查询的当前数据已在事务中,已加锁.但返回异常信息:提示数据已加锁.SQL语句: Sql代码: 复制代码 代码如下: SELECT * FROM hold_mc_site_product_pic pic WHERE pic.id = 730127 FOR UPDATE nowait 2.应用在多线程并发的情况下.先查询出要处理的数据,并加入数据库级的锁

  • sqlserver中delete、update中使用表别名和oracle的区别

    昨天发现程序中数据分析的结果不对,重新进行分析后,原数据仍在,有值的字段被累计.心说,不对啊,是重新生成记录后才分析的啊.难道忘了DELETE了?查代码,发现有删除语句.于是在查询分析器中执行,报错.反复试几次,明白了,Delete From不认表名别名!回头想下,当初程序改完后主要是在Oracle中测的,SQLServer一直没细测. 之所以要用别名,是因为where条件中需要用到子查询写一些条件,下面不写那么复杂,仅说明一下问题. 结论: (ORACLE适用)    DELETE FROM

  • sqlserver和oracle中对datetime进行条件查询的一点区别小结

    首先,看一下sql server,之前我们都通过前台用户选择一个起始时间和一个结束时间(以日为最小单位),然后来作为条件进行查询,如果直接通过"between starttime and endtime"来作为条件的话,发现会自动将"2009-06-17"转化为" 2009-06-17 00:00:00",于是如下查询条件" between '2009-06-16' and '2009-06-17'",只能得到16日的数据,1

  • oracle中to_date详细用法示例(oracle日期格式转换)

    TO_DATE格式(以时间:2007-11-02 13:45:25为例) 1. 日期和字符转换函数用法(to_date,to_char) 复制代码 代码如下: select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as nowTime from dual;   //日期转化为字符串  select to_char(sysdate,'yyyy')  as nowYear   from dual;   //获取时间的年  select to_char(sys

随机推荐