Oracle Timestamp类型 | 您所在的位置:网站首页 › oracle日期转timestamp › Oracle Timestamp类型 |
在本教程中将学习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值的输出,可以使用TO_CHAR()函数,将TIMESTAMP值或列的名称作为第一个参数,将格式字符串作为第二个参数。 以下语句使用TO_CHAR()函数来格式化logged_at列中的值: SELECT message, TO_CHAR(logged_at, 'MONTH DD, YYYY "at" HH24:MI') FROM logs;执行上面查询语句,得到下面结果 - 要提取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数据类型以及如何有效地处理时间戳。 上一篇: Oracle Date类型 下一篇: Oracle Interval类型 |
CopyRight 2018-2019 实验室设备网 版权所有 |