`
onTheJavaWay
  • 浏览: 18680 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Oracle时间戳

阅读更多

   有时候想在数据库中存储插入数据时的时间,比如有一条评论,我想在把评论内容存入数据库的时候把存储评论时的时间也存到数据库中。当然这个过程是自动完成的,即不需要我在业务逻辑代码中还得初始化一个Date对象然后再把这个Date对象转换为某种格式存到数据库中。
   Oracle提供了时间戳数据类型Timestamp来支持这个操作。当一个字段定义成Timestamp类型时,通过在insert语句中指定value为Sysdate就可以将执行insert语句时的时间存入数据库中。例如:

Create Table webcomments(
      username varchar2(10) Default '匿名用户',
      commenttime Timestamp,                                                                  //指定为时间戳数据类型
    );
Insert Into webcomments Values('test',Sysdate);                                 //将当前时间存入到commenttime 字段 
 

    然后执行查询:
      Select commenttime From webcomments;
    结果显示commenttime 列的值是这种样子的:18-4月 -10 03.31.06.000000 下午
    这和我们的预想不太相符。我们想查询出来的时间应该是这个样子的:2010-04-18 13:10:57
    这要是用to_char函数,利用它我们可以把一个日期数据转换为任何我们想要的格式。例如这样写select语句:

Select to_char(commenttime,'yyyy-mm-dd hh24:mi:ss') From webcomments; 
 

     得到的结果是2010-04-18 15:31:06
     要了解的一点是:如果单单是想存储时间的话,Oracle还提供了一种日期类型Date,使用它也可以存储插入数据时的时间,只要插入数据时也赋值为 Sysdate就可以。并且在查询时也一样可以使用to_char函数得到想要的格式。那问题就是:为什么我们要使用Timestamp类型呢?
     date和Timestamp都是对日期和时间的表示,只是两种类型的精确度不同,前者精确到秒,后者精确到小数秒Timestamp数据的格式化显示和 Date数据一样。注意,to_char函数支持Date和Timestamp,但是trunc却不支持Timestamp数据类型。这已经清楚表明了在 当两个时 间的差别极度重要的情况下,使用Timestamp数据类型要比Date数据类型更确切。
    并且:两个Date类型相减的结果是以“天”为单位的,而两个Timestamp类型相减的结果是直观的显示为“多少天+多少小时+多少分钟+多少秒+多少小数秒”。例如:

select to_timestamp('2006-01-02 13:40:20.2','yyyy-mm-dd hh24:mi:ss.ff'))- to_timestamp('2006-01-01 12:10:10.1','yyyy-mm-dd hh24:mi:ss.ff') as test from dual; 
 

      查询结果显示(多少天 多少小时 多少分钟 多少秒 多少小数秒 ):000000001 01:30:10.100000
    最后,Date转换为Timestamp要使用CAST函数,例如:

 

select CAST(sysdate as Timestamp)  from dual;
 

 

分享到:
评论

相关推荐

    时间戳转换工具

    时间戳转换工具,将oracle中的时间戳转换为时间格式。

    oracle中日期类型与unix 时间戳的转换

    oracle中日期类型与unix 时间戳的转换, Unix时间戳记是从'1970-01-01 00:00:00'GMT开始的秒数,表现为整数型。 Oracle中的时间是Date型,以下函数提供了两种时间转换的Oracle函数 --unix时间戳与date时间互转 ...

    Oracle中通过触发器来追踪用户的活动

    4. 登录时间:精确到毫秒的Oracle时间戳,记录用户登录的具体时间。 5. 注销时间:同样精确到毫秒的Oracle时间戳,记录用户注销的时间。 6. 最后程序:用户在注销时执行的最后一个程序名称。 7. 最后活动:用户在...

    使用oracle计算系统当前时间的毫秒数

    #### Java与Oracle时间戳的转换示例 在Java中,可以通过`java.util.Date`类的构造函数或`System.currentTimeMillis()`方法来处理Oracle返回的毫秒数。以下是一个简单的示例代码: ```java Date date = new Date...

    oracle找回删除的数据

    ### Oracle时间戳功能 在Oracle中,每个事务都有一个系统改变号(System Change Number, SCN),用于记录事务的发生时间。基于SCN,Oracle提供了强大的时间旅行查询能力,即闪回查询。通过利用Oracle数据库中的内部...

    oracle数据库实现获取时间戳的无参函数

    在Oracle数据库中,时间戳(Timestamp)是一种用来记录精确到秒甚至毫秒的日期和时间数据类型。在处理与时间相关的业务逻辑时,有时我们需要获取当前时间的时间戳,以便进行各种计算或比较。本文将详细介绍如何在...

    Oracle数据库表定时备份表 表名动态拼接时间戳存储过程

    1、备份Oracle数据库表时添加动态时间戳,解决了ORA-00922: missing or invalid option 错误。 2、备份表结构和数据,还备份索引、序列、触发器等对象,提高了备份速度。但需要手动备份原始表的序列。 3、备份策略是...

    kettle实现时间戳增量同步案例

    在这个“kettle实现时间戳增量同步案例”中,我们将探讨如何利用Kettle来实现Oracle数据库中基于时间戳的数据增量同步。 1. **理解时间戳增量同步** 时间戳增量同步是指只同步自上次同步以来发生改变的数据,通常...

    oracle timestamp详解

    oracle timestamp详解 将常用的转换方法及使用注意事项都罗列出来了

    ETL,根据时间戳进行增量更新实例

    在“ETL,根据时间戳进行增量更新实例”中,我们关注的是如何在源表没有时间戳字段的情况下实现这一目标。这可能是因为原始数据源不包含记录创建或修改的时间信息,或者这些信息不可靠。在这种情况下,我们需要采取...

    用Oracle 10g新的行时间戳捕捉变化

    不过,值得注意的是,`ORA_ROWSCN`并不直接对应于日期或时间戳,因此不能直接用于时间相关的查询。若需要基于时间的查询,还需要结合其他方法,比如使用TIMESTAMP列或者Oracle的闪回查询(Flashback Query)功能。 ...

    java 获取指定日期(带毫秒)13位时间戳

    java 获取指定日期(带毫秒)的 13位时间戳 ,获取当前时间的时间戳 一句话就可以System.currentTimeMillis();

    Oracle数据库表定时备份表 表名动态拼接时间戳存储过程-解决了ORA-00922

    1、备份Oracle数据库表时添加动态时间戳,解决了ORA-00922: missing or invalid option 错误和ORA-00922: 选项缺失或无效错误。 2、备份表结构和数据,还备份索引、序列、触发器等对象,提高了备份速度。但需要手动...

    asp用的mysql时间戳转换方法

    例如,当我们需要将MySQL中的数据导出到Oracle或SQLServer时,可能会遇到时间戳格式不兼容的情况。本文主要介绍一种在ASP环境下实现MySQL时间戳转换为SQL Server日期格式的方法。 #### MySQL时间戳特点 MySQL存储...

    oracle的备份和恢复语句整理

    "Oracle 的备份和恢复语句整理" Oracle 的备份和恢复是数据库管理中非常重要的一部分,以下是 Oracle 的备份和恢复语句整理: 1. EXPDP 和 IMPDP 命令 EXPDP (Data Pump Export) 和 IMPDP (Data Pump Import) 是 ...

    Oracle_10.2.0.3.zip

    这个文件可能是Oracle的文档时间戳文件,其中B16254可能是文档的特定ID,用于区分不同的文档集。这种文件通常包含了安装指南、用户手册、系统管理员指南等技术文档,帮助用户理解如何安装、配置和管理Oracle数据库。...

    oracle迁移达梦常见问题汇总

    本文主要结合之前一次oracle迁移达梦的项目,将碰到的问题以及一系列踩过的坑列举出来供大家参考,数据库版本是达梦7。(本文中涉及到的部分对象名已用sch1,tab1等方式替换) 1、整体情况 迁移过程中失败任务数低于5%...

    oracle-java数据类型1

    - `TIMESTAMP`, `TIMESTAMP WITH TIME ZONE`, `TIMESTAMP WITH LOCAL TIME ZONE` 类型对应 Oracle 的时间戳类型,没有标准的 JDBC 类型,但可以通过 `oracle.jdbc.OracleTypes.TIMESTAMP` 等访问 3. **用户定义的...

    kettleCDC_oracle_mysql.rar

    在这个场景中,这个中间表在 Oracle 数据库中,而在 MySQL 数据库中则有另一个版本,这表明 CDC 流程需要同步这两个时间戳以确保数据的一致性。 Kettle,也被称为 PDI,是一个开源的数据集成工具,它提供了丰富的...

Global site tag (gtag.js) - Google Analytics