在本教程中将学习Oracle TIMESTAMP数据类型以及如何在Oracle数据库中有效处理TIMESTAMP数据。

Oracle TIMESTAMP数据类型简介

TIMESTAMP数据类型用于存储日期和时间数据,包括年,月,日,时,分和秒。

另外,它存储小数秒,它不是由DATE数据类型存储的。

要定义TIMESTAMP列,请使用以下语法:

column_name TIMESTAMP[(fractional_seconds_precision)]

fractional_seconds_precision指定SECOND字段小数部分的位数。它的范围从0到9,这意味着可以使用TIMESTAMP数据类型来存储到纳秒的精度。

如果省略fractional_seconds_precision,则默认为6。

以下表达式说明了如何定义TIMESTAMP列:

...

started_at TMESTAMP(2),

...

在此示例中,started_at列是一个TIMESTAMP列,其分数秒精度设置为微秒。

Oracle TIMESTAMP文字

要指定TIMESTAMP文字,请使用以下格式:

TIMESTAMP 'YYYY-MM-DD HH24:MI:SS.FF'

以下示例说明了TIMESTAMP文字:

TIMESTAMP '1999-12-31 23:59:59.10'

有关如何构造格式字符串的详细信息,请查看Oracle日期格式。

Oracle TIMESTAMP示例

首先,创建一个名为logs的新表,其中包含一个TIMESTAMP列用于演示。

CREATE TABLE logs (

log_id NUMBER GENERATED BY DEFAULT AS IDENTITY,

message VARCHAR(2) NOT NULL,

logged_at TIMESTAMP (2) NOT NULL,

PRIMARY KEY (log_id)

);

其次,将新行插入到logs表中:

INSERT INTO logs (

message,

logged_at

)

VALUES (

'Invalid username/password for root user',

LOCALTIMESTAMP(2)

);

INSERT INTO logs (

message,

logged_at

)

VALUES (

'User root logged in successfully',

LOCALTIMESTAMP(2)

);

在这个例子中,使用LOCALTIMESTAMP(2)函数中得到当前的本地时间戳,其精确度秒为微秒,并将该值插入到logs表的logs_at列中。

第三,从日志表中查询TIMESTAMP数据:

SELECT log_id,

message,

logged_at

FROM logs;

执行上面查询语句,得到下面结果 -

格式化TIMESTAMP值

要更改TIMESTAMP值的输出,可以使用TO_CHAR()函数,将TIMESTAMP值或列的名称作为第一个参数,将格式字符串作为第二个参数。

以下语句使用TO_CHAR()函数来格式化logged_at列中的值:

SELECT message,

TO_CHAR(logged_at, 'MONTH DD, YYYY "at" HH24:MI')

FROM logs;

执行上面查询语句,得到下面结果 -

提取TIMESTAMP组件

要提取TIMESTAMP组件(如年,月,日,小时,分钟和秒),请使用EXTRACT()函数:

EXTRACT( component FROM timestamp);

如以下面的语句示例:

SELECT

message,

EXTRACT(year FROM logged_at) year,

EXTRACT(month FROM logged_at) month,

EXTRACT(day FROM logged_at) day,

EXTRACT(hour FROM logged_at) hour,

EXTRACT(minute FROM logged_at) minute,

EXTRACT(second FROM logged_at) second

FROM

logs;

注意到NLS_DATE_LANGUAGE参数决定日期名称(Thursday),月份名称(August)以及TIMESTAMP缩写(THU,AUG)的语言。

默认的TIMESTAMP格式

当字符类型的值被转换为TIMESTAMP数据类型时,Oracle使用NLS_TIMESTAMP_FORMAT参数来控制默认时间戳格式。

以下语句返回Oracle数据库系统中当前的默认时间戳格式:

SELECT

value

FROM

V$NLS_PARAMETERS

WHERE

parameter = 'NLS_TIMESTAMP_FORMAT';

执行上面查询语句,将得到以下结果 -

DD-MON-RR HH.MI.SSXFF AM

例如,假设要将新行以logs_attane值插入到logs表中,则使用TO_TIMESTAMP()函数将字符串转换为TIMESTAMP值,如下所示:

INSERT INTO logs (

message,

logged_at

)

VALUES (

'Test default Oracle timestamp format',

TO_TIMESTAMP('03-AUG-17 11:20:30.45 AM')

);

请注意,时间戳值 - '03-AUG-17 11:20:30.45 AM'遵循标准时间戳格式。

下面来验证结果:

SELECT

log_id, message, logged_at

FROM

logs;

执行上面示例代码,得到以下结果 -

如果想使用其他时间戳格式而不是默认格式,则可以使用ALTER SESSION SET语句来执行此操作。

在本教程中,您已经了解了Oracle TIMESTAMP数据类型以及如何有效地处理时间戳。

¥ 我要打赏

纠错/补充

收藏

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

oracle中timestamp怎么用,Oracle Timestamp类型相关推荐

  1. 【DB笔试面试612】在Oracle中,查询转换包含哪些类型?

    ♣题目 部分 在Oracle中,查询转换包含哪些类型? ♣答案部分 在Oracle数据库中,用户发给Oracle让其执行的目标SQL和Oracle实际执行的SQL有可能是不同的,这是因为Oracle可 ...

  2. oracle中的guid,在Oracle中使用Guid

    在Oracle中使用Guid 在Oracle中使用Guid 在Oracle中可以用SYS_GUID()来生成一个guid,相当于msSql中的newid(). 在Oracle9i和Oracle 10g ...

  3. oracle数据库insert into,oracle中insert into用法 oracle中insert如何带条件添加数据?

    oracle insert into 脚本怎么写 INSE INTO BOOK(bookid,name,price) VALUES('100123','oracle ',54); 或者 INSE IN ...

  4. oracle中怎么导外表,ORACLE 自定义类型该如何导入????

    出错原因: 往b用户imp表时,要创建type,使用的OID和用户a的一样,同一个实例的OID不能重复. 解决办法: 在system用户下定义 type MAIN_SZ_ZGY_TYPE,授权 gra ...

  5. oracle中的几大对象,oracle 4个大对象(lobs)类型介绍

    oracle 4个大对象(lobs)类型介绍 在oracle中,有4个大对象(lobs)类型可用,分别是blob,clob,bfile,nclob. 下面是对lob数据类型的简单介绍. blob:二进 ...

  6. oracle中如何加字母,Oracle数据库之oracle数据库表插入数据的时候如何产生一个字母+数字...

    本文主要向大家介绍了Oracle数据库之oracle数据库表插入数据的时候如何产生一个字母+数字,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助. Oracle 语句中" ...

  7. oracle中的循环函数,Oracle日期函数和循环总结

    一,日期相关的函数 Select to_char(sysdate,'Q') from dual;--指定日期的季度 Select to_char(sysdate,'MM') from dual;--月 ...

  8. oracle中asm磁盘不足,Oracle用户无法访问ASM磁盘组问题

    1. 权限问题引起找不到ASM磁盘组 1.1 确认操作系统用户属主 # 确认属主 Grid Infrastructure Home Owner : grid Primary Group : oinst ...

  9. oracle中存在函数吗,Oracle中的函数

    Oracle中的函数 1.单行函数也称标量函数,对于从表中查询的每一行,该函数都返回一个值.单行函数可用与select子句中,也可用于where子句中.单行函数大致分为: >.日期函数 > ...

  10. 查询oracle中用户的角色,oracle中用户角色的查询和授权

    用户拥有的系统权限 select  privilege  from dba_sys_privs  where grantee='&USERNAME' union select  privile ...

最新文章

  1. 如何让java代码保存一天内的记录_Java的JVM解读
  2. android adb端口被占用问题解决办法
  3. java IO流用法
  4. 运维与自动化系列③自动化部署基础与shell脚本实现
  5. Virtual Judge —— Nim TopCoder - 11469
  6. Activiti源码 ProcessEngineConfiguration
  7. Girl Love Value
  8. BugkuCTF-MISC题妹子的陌陌
  9. 10 有关业务/事件类型WQ在年2021的号码范围不存在
  10. 详解Windows 搭建MRTG流量检控服务器
  11. 事件 ID 1505,1508
  12. 图片上传至服务器实现压缩
  13. python可以嵌在vba中吗_Jupyter Notebooks嵌入Excel并使用Python替代VBA宏
  14. DC、HDC和CDC的区别及MFC常见类的作用
  15. 精雕软件怎么把图片转成灰度图_精雕软件怎样保存bmp
  16. Java Excel导出(包含图片) —— Easypoi
  17. java登陆界面图片_java登陆界面如何插入背景图片
  18. 比较motif和一条长序列的相似性
  19. 小清新版js扫雷(使用原生js)
  20. python_给视频打马赛克

热门文章

  1. Flutter入门并开发天气预报APP(8)——天气预报第二步-选择省、市、区界面及网络请求
  2. Android Service完全解析,关于服务你所需知道的一切(上)
  3. 使用第三方云通讯平台时,出现{'172001':'网络错误'}解决方法
  4. python 文件读写with open模式r,r+ w,w+ a,a+区别详解
  5. python按行读字符串,python按行读取文件并找出其中指定字符串
  6. Zxing 生成条形码(一维码)
  7. Advanced Installer打包Winform后安装在C盘权限不足的解决方法
  8. mysql触发器实验小结_mysql 触发器小结
  9. php 获取配置信息,PHP系统配置信息的获取
  10. 有一个数列,其前三项分别为1、2、3,从第四项开始,每项均为其相邻的前三项之和的1/2,问:该数列从第几项开始,其数值超过1200。