Oracle中的TO_DATE和TO_CHAR函数以及日期处理

本文不再更新,可能存在内容过时的情况,实时更新请移步我的新博客:Oracle中的TO_DATE和TO_CHAR函数以及日期处理

oracle 中 TO_DATE 函数的时间格式,以 2008-09-10 23:45:56 为例。

Oracle中日期的格式

Year(年):

格式 说明 显示值 备注
yy two digits(两位年) 08
yyy three digits(三位年) 008
yyyy four digits(四位年) 2008

Month(月):

格式 说明 显示值 备注
mm number(两位月) 09
mon abbreviated(字符集表示) 9月 若是英文版,则显示sep
month spelled out(字符集表示) 9月 若是英文版, 则显示 september

Day(日):

格式 说明 显示值 备注
dd number(当月第几天) 10
ddd number(当年第几天) 254
dy abbreviated(当周第几天简写) 星期三 若是英文版, 则显示 wed
day spelled out(当周第几天全写) 星期三 若是英文版, 则显示 wednesday
ddspth spelled out thirteenth 格式后缀 SP:相应日期部分的英文拼写 TH:相应日期部分日的序号,即在表示日的数字后加”th”

Hour(时):

格式 说明 显示值 备注
hh two digits(12小时进制) 11
hh24 two digits(24小时进制) 23

Minute(分):

格式 说明 显示值 备注
mi two digits(60进制) 45

Second(秒):

格式 说明 显示值 备注
ss two digits(60进制) 56

其他:

格式 说明 显示值 备注
Q digit(季度) 3
WW digit(当年第几周) 37
W digit(当月第几周) 2

说明:

12小时格式下时间范围为: 1:00:00 – 12:59:59(12 小时制下的 12:59:59 对应 24 小时制下的 00:59:59) ;24小时格式下时间范围为: 0:00:00 – 23:59:59

Oracle中日期格式的转化

  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(sysdate,'mm')    as nowMonth from dual;   //获取时间的月
select to_char(sysdate,'dd')    as nowDay    from dual;   //获取时间的日
select to_char(sysdate,'hh24') as nowHour   from dual;   //获取时间的时
select to_char(sysdate,'mi')    as nowMinute from dual;   //获取时间的分
select to_char(sysdate,'ss')    as nowSecond from dual;   //获取时间的秒
--字符串转换为日期格式
select to_date('2004-05-07 13:23:44','yyyy-mm-dd hh24:mi:ss')    from dual//

2.求某天是星期几

--查询
select to_char(to_date('2015-12-13','yyyy-mm-dd'),'day') from dual;
--输出
星期三
--查询
select to_char(to_date('2015-12-13','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual;
--输出
sunday

设置日期语言的方式:

ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN';

也可以这样:

select to_date('2015-12-13','yyyy-mm-dd','NLS_DATE_LANGUAGE = American') from dual;

3.计算两个日期之间的天数

select floor(sysdate - to_date('20020405','yyyymmdd')) from dual;

因此,你也可以计算两个日期之间毫秒数或当前日期的毫秒数

--计算两个日期之间的毫秒数
select (sysdate - to_date('1970-01-01','yyyy-mm-dd'))* 86400000  from dual;

注:上面的计算需要根据时区进行调整,差别为8/24天,也就是8小时。

4.不同时区的处理

select new_time(date,timezone1,timezone2) from dual;

函数说明:

  • 根据date在timezone1时区的时间,返回对应的在timezone2时区对应的时间;

参数说明:

  • date:日期时间型表达式;
  • timezone1:旧时区;
  • timezone2: 新时区;

时区参数:

大西洋标准时间:        AST或ADT
阿拉斯加_夏威夷时间: HST或HDT
英国夏令时:          BST或BDT
美国山区时间:     MST或MDT
美国中央时区:     CST或CDT
新大陆标准时间:        NST
美国东部时间:     EST或EDT
太平洋标准时间:        PST或PDT
格林威治标准时间:   GMT
Yukou标准时间:      YST或YDT 

5.月份加减

--add_months(date,n):返回date加上n个月后的新日期
select sysdate ,add_months(sysdate,3)  from dual;

6.获取指定日期所属季度

select to_char(to_date('2019-12-26','yyyy-mm-dd'),'Q') from dual;

本文不再更新,可能存在内容过时的情况,实时更新请移步我的新博客:Oracle中的TO_DATE和TO_CHAR函数以及日期处理

原文地址:https://www.cnblogs.com/cobcmw/p/12103264.html

时间: 2024-08-03 05:03:40

Oracle中的TO_DATE和TO_CHAR函数以及日期处理的相关文章

【转】Oracle 中的 TO_DATE 和 TO_CHAR 函数 日期处理

Oracle 中的 TO_DATE 和 TO_CHAR 函数oracle 中 TO_DATE 函数的时间格式,以 2008-09-10 23:45:56 为例 格式 说明 显示值 备注 Year(年): yy two digits(两位年) 08   yyythree digits(三位年) 008   yyyy four digits(四位年) 2008 Month(月): mm number(两位月) 09   mon abbreviated(字符集表示) 9月 若是英文版, 则显示 sep

ORACLE中的支持正则表达式的函数

ORACLE中的支持正则表达式的函数主要有下面四个:1,REGEXP_LIKE :与LIKE的功能相似2,REGEXP_INSTR :与INSTR的功能相似3,REGEXP_SUBSTR :与SUBSTR的功能相似4,REGEXP_REPLACE :与REPLACE的功能相似它们在用法上与Oracle SQL 函数LIKE.INSTR.SUBSTR 和REPLACE 用法相同,但是它们使用POSIX 正则表达式代替了老的百分号(%)和通配符(_)字符.POSIX 正则表达式由标准的元字符(met

oracle中的创建过程,函数,包

一.创建存储过程 存储过程是在oracle中存取完成特定业务逻辑的代码块.存储过程是命名块,匿名块不存在数据库中,命名块会存储到数据库中,匿名块每次运行都需要提前编译,命名块一次存储,只会编译一次.命名块可以多次使用. 创建存储过程的语法: create [or replace] procedure 存储过程的名称(参数名[in/out/inout] 参数类型,参数名...)] is/as 变量声明部分 begin 业务逻辑处理部分 exception 异常处理部分 end; 注意: 1.存储过

Oracle中的 Decode和nvl 函数的用法及区别?

Decode decode(条件,值1,翻译值1,值2,翻译值2,...,缺省值)    该函数与程序中的 If...else if...else 意义一样 NVL 格式:NVL( string1, replace_with) 功能:如果string1为NULL,则NVL函数返回replace_with的值,否则返回string1的值,如果两个参数都为NULL ,则返回NULL. 注意事项:string1和replace_with必须为同一数据类型,除非显式的使用TO_CHAR函数进行类型转换.

工作问题总结一:由数据查询慢来浅谈下oracle中的like和instr函数的模糊查询效率问题

今天上午10点左右,boss告诉我们生产环境一客户在某功能下录入信息时,出现加载数据很慢的情况,因为严重影响了客户使用,就让我们赶紧查实原因,组长和我就根据领导提供的用户登录系统,找到出问题的那个功能,选择买方和银行信息后加载限额信息时组长的电脑出现的反应是浏览器卡死,我的电脑上是去趟厕所回来坐下来之后才加载出来,我靠3分钟左右的时间,崩溃!!!  赶紧查代码  经查询代码发现,加载的数据是从千万量级(有2321w余条)的表中查询,查询语句中使用了like操作符,经研究发现确实是因为查询的sql

oracle中类似indexof用法_instr函数

[sql] 在oracle中没有indexof()函数 但是提供了一个 instr() 方法 具体用法: select instr('保定市南市区','市',1,1)-1 from dual; 解释:1. '保定市南市区' =>可以是表达式,也可以是具体数据 2. '市'=>为分离的标志,这里为两组数据中的“市”这个字 3. 第一个1为从左边开始,如果为-1,则从右边开始. 4. 第二个1为“市”出现的第几次. www.2cto.com 在GBK编码下,一个中文占两个字节 select ins

关于Oracle中的nvl()函数的使用,中医科查询出院病人信息报错

中医科查询出院病人信息报下面的错误 然后看到该界面的sql为 然后在plsql里面运行该代码, 报错 处理方法: 1.确定报错的位置 现在确定出错的位置就是注销掉的那两行代码, 然后 然后这就是报错的原因, 是因为他的入院诊断有两条 我想判断一下,如果是中医病区就取中医的诊断否则取西医的 但是宁哥给了一个更好的解决问题的方法 用NVL函数 在介绍这个之前你必须明白什么是oracle中的空值null 1.NVL函数 NVL函数的格式如下:NVL(expr1,expr2) 含义是:如果oracle第

hive中的to_date和to_char

hive的日期格式可由String类型保存,只能识别两种格式yyyy-MM-dd和yyyy-MM-dd HH:mm:ss.只要将日期转为这两种格式hive就能识别为日期.也就是不管to_date.to_char都是将日期格式化为字符串. unix_timestamp(日期字符串,日期格式) 返回日期时间戳from_unixtime(日期时间戳,日期格式) 返回日期字符串 to_date,to_char都用的一个公式,唯一不同的是to_date的目标日期格式是写死的 1.to_date from_

oracle中多行合并聚合函数

在oracle数据库中, 进行字段合并,可以使用wm_concat(column)函数,但是在这种方法不被Oracle所推荐,因为WMSYS用户用于Workspace Manager,其函数对象可能因版本而不同而出现异常,这种变化在11.2.0.3及10.2.0.5中体现出来.原本WM_CONCAT函数返回值为 VARCHAR2,但在一些版本下就会变更为CLOB.这一变化导致了很多程序的异常. Oracle建议用户使用自定义函数来实现该功能,而不是使用WorkSpace的这个内部函数.这个函数包