点击蓝色字关注“SQL数据库运维”,回复“SQL”获取2TB学习资源!
Oracle DATE、TIMESTAMP数据类型简介
Oracle 数据库版本是:Oracle 11g。
Oracle提供了两种日期时间数据类型:DATE
和TIMESTAMP
用于存储时间点数据。
DATE数据类型允许以一秒的精度存储包括日期和时间的时间点值。
DATE数据类型存储年份(包括世纪),月份,日期,小时数,分钟数和秒数。它的范围从公元前4712年1月1日到公元9999年12月31日(共同时代)。
Oracle数据库有其自己的专用格式来存储日期数据。它使用7个字节的固定长度的字段,每个字段对应于世纪,年,月,日,时,分和秒来存储日期数据。
常用的2个日期函数:SYSDATE, SYSTIMESTAMP(时间戳)
SELECT SYSDATE , SYSTIMESTAMP FROM dual ;
SYSTIMESTAMP 列,可以使用以下语法:
column_name TIMESTAMP[(fractional_seconds_precision)]
fractional_seconds_precision,则默认TIMESTAMP 是可以精确到秒的后6位。
1.Oracle日期格式
以下语句查询NLS_DATE_FORMAT参数的当前值:
SELECTvalueFROMV$NLS_PARAMETERSWHEREparameter = 'NLS_DATE_FORMAT';
可以查询出在当前Oracle数据库系统中,NLS_DATE_FORMAT的值是:
YYYY-MM-DD
以下语句通过使用sysdate函数以YYYY-MM-DD日期格式返回当前日期。
SELECTsysdateFROMdual;
执行上面查询语句,得到以下结果

2. 使用TO_CHAR()函数将日期转换字符串
TO_CHAR()函数采用DATE值作为参数,根据指定的格式对其进行格式化,并返回一个日期字符串。
例如,要以特定的格式显示当前的系统日期,请按如下所示使用TO_CHAR()函数:
SELECTTO_CHAR( SYSDATE, 'MM/DD/YYYY HH24:MI:SS' )FROMdual;
执行上面查询语句,得到以下结果

TO_CHAR()
函数用于显示月份名称的语言由NLS_DATE_LANGUAGE参数控制:
SELECTvalueFROMV$NLS_PARAMETERSWHEREparameter = 'NLS_DATE_LANGUAGE';
执行上面查询语句,得到以下结果

TO_CHAR()
函数常用转换
SELECTTO_CHAR(SYSDATE , 'yyyy') AS 年份 ,-- 年份TO_CHAR(to_date('2022-07-01', 'yyyy-mm-dd'), 'q') AS 季度 ,-- 季度TO_CHAR(SYSDATE , 'mm') AS 月份 ,-- 月份TO_CHAR(SYSDATE , 'dd') AS 日, -- 每月的第几天TO_CHAR(SYSDATE , 'd') AS "日(周)", -- 每周第几天(第一天是周日)TO_CHAR(SYSDATE , 'ddd') AS "日(年)" , -- 每年的第几天TO_CHAR(SYSDATE , 'ww') AS "周(年)", -- 每年的第几周TO_CHAR(to_date('2022-01-08', 'yyyy-mm-dd') , 'ww') AS "周(年)" -- 每年的第几周FROMdual ;
执行上面查询语句,得到以下结果

3. TO_DATE()或TO_TIMESTAMP()将字符串转换为日期
由于Oracle使用内部格式来存储DATE数据,因此在将日期值存储到日期列之前,通常必须将字符串转换为日期值。
要转换不是标准格式的日期值,可以使用带有格式字符串的TO_DATE()或TO_TIMESTAMP()函数。
SELECTTO_DATE('2022-10-26 17:48:55', 'yyyy-mm-dd hh24:mi:ss' )FROMdual;
SELECTTO_TIMESTAMP('2022-10-26 17:48:55.114', 'yyyy-mm-dd hh24:mi:ss.ff3') AS "t1", TO_TIMESTAMP('2022-10-26 17:48:55', 'yyyy-mm-dd hh24:mi:ss') AS "t1"FROMdual ;
执行上面查询语句,得到以下结果


点击关注“SQL数据库运维”,后台或浏览至公众号文章底部点击“发消息”回复关键字:进群,带你进入高手如云的技术交流群。后台回复关键字:SQL,获取学习资料。
动动小手点击加关注呦☟☟☟




