SQLPLSQL:⽇期函数总结
TO_DATE格式(以当前时间: 2017年2⽉9⽇11:25:38 为例)
1.年:
yy两位年显⽰值:17
yyy三位年显⽰值:017
yyyy四位年 显⽰值:2017
2.⽉:
mm两位⽉显⽰值:11
3.⽇:
dd            当⽉第⼏天显⽰值:09
d当周第⼏天 1~7周⽇=1,周六=7
dy 星期⼏Mon~Sun
day 星期⼏
Monday~Sunday
ddd⼀年中的第⼏天
4.时
hh2424⼩时制显⽰值:11
5.分
mi    60进制    显⽰值:25
6.秒
ss    60进制    显⽰值:38⽇期函数
1、sysdate:得到数据库服务器的当前⽇期和时间
2、current_date:得到客户端的当前⽇期和时间
因为数据库把⽇期作为数字存储,因此可以对⽇期进⾏加减运算,单位是天。
1 ) date + n : 加减⼏天,n可以是负的
2) date + n/24 : 加减⼏个⼩时
3) date - date : 相差的天数
例1:给当前⽇期分别加减3天 sysdate +/- 3
例2:给当前⽇期加1个⼩时
select to_char(sysdate + 1/24,'YYYYMMDD HH24:MI:SS')
from dual;
MONTHS_BETWEEN(date1, date2)
返回两个⽇期差⼏个⽉。 记住是 前date1 - 后date2
例如:
查询雇员在公司⼯作的总⽉数
select last_name,months_between(sysdate,hire_date)
from employees;
ADD_MONTHS(date, n):
给⽇期加减N个⽉。N可以为负数, 加减12个⽉就是⼀年啦
例如:
SELECT ADD_months(SYSDATE,-12) --⼀年前的今天
ADD_months(SYSDATE,+24) --两年后的今天
FROM dual;
next_day(date,'char'):
到从date开始的下⼀个星期⼏的⽇期。char表⽰星期⼏
NEXT_DAY(date,6)  -->下个周五 (这⾥6,代表星期5,因为美国⽇期是从星期天开始的,所以1代表的是星期天,2代表星期⼀,以此类推)
例如:
查今天之后的下⼀个星期⼀是⼏⽉⼏号? 注意字符集
select next_day(sysdate,'星期⼀') from dual;
ORA01846: 周中的⽇⽆效
select next_day(sysdate,'monday') from dual;
中⽂情况下"星期天"不识别, "星期⽇"才识别
ROUND(date[,'fmt']):
进位规则:秒=30,分=30,时=12,⽇=16,⽉=7; 超过上⾯分割线就向前⼀位进1
TRUNC(date [, 'fmt']):  (常⽤,后⾯不接参数就是将⽇期的时分秒去掉,注意和round区分)
例如 :
1. selec trunc(sysdate,'month'), --按⽉进⾏截断,直接截断到给定⽇期的本⽉的1号
2. trunc(sysdate,'year') --按年进⾏截断,直接截断到给定⽇期的本年⽉的1⽉1号
3. from dual;
时间 & 时区
时区概念:地球分24个时区,东西各12个。⼀个时区代表1个⼩时。
时区值通常以绝对偏移量格式来表⽰:带正负号的⼩时:分钟。
东时区为正的,西时区为负的。时区⼀旦确定了,⽇期时间函数的返回值就参照该时区来返回。
1.查看数据库,会话时区:
SELECT DBTIMEZONE,      --查看数据库所在时区
SESSIONTIMEZONE  --查看会话所在时区
FROM DUAL;
注意:
DBA通过指定⼿⼯建库时CREATE DATABASE 语句的SET TIME_ZONE ⼦句
来设置数据库的默认时区。如果省略,那么默认数据库时区是操作系统时区。
如果操作系统的时区格式是oracle不⽀持的,那么就把数据库的时区设为0时区。官⽅推荐数据库的时区都使⽤0时区。ALTER SESSION语句不能改变数据库时区。
2.设置会话时区为西五区(美国东部时间)
alter session set time_zone = '-05:00'; --绝对偏移量,负为西
3.设置本会话使⽤数据库的时区
alter session set time_zone = DBTIMEZONE;
4.把时区设置成本地
alter session set time_zone = local;  --不同操作系统,可能不⽀持
5.时区设置成某地域的时区
alter session set time_zone = 'American/New_York'; --不同操作系统,可能不⽀持
和客户端有关的⽇期时间函数:3个
current_date  current_timestamp  localtimestamporacle中trunc函数用法
三个都返回客户端的当前⽇期和时间,区别在于值的数据类型不⼀样
sessiontimezone:该函数返回客户端的时区设置
查看系统各个时间函数:
select sessiontimezone ,
current_date ,
current_timestamp ,
localtimestamp
from dual; ---(注意三个时间函数的精度)
数据库的时区
返回数据库的时区: 0时区
select dbtimezone from dual;
DBA通过指定⼿⼯建库时CREATE DATABASE 语句的SET TIME_ZONE ⼦句
来设置数据库的默认时区。如果省略,那么默认数据库时区是
操作系统时区。
如果操作系统的时区格式是oracle不⽀持的,那么就把数据库的时区设为0时区。官⽅推荐数据库的时区都使⽤0时区。ALTER SESSION语句不能改变数据库时区。
TIMESTAMP类型:时间戳类型。3种
-TIMESTAMP数据类型是DATE数据类型的扩展:
1)TIMESTAMP (fractional_seconds_ precision)
2)TIMESTAMP (fractional_seconds_precision) WITH

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。