数据库日期时间函数
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1 建表
oracle
create table T_person(FIdNumber varchar2(20),Fname varchar2(20),FBirthDay date,FRegDay date,FWeight numberic(10,2));
insert into T_person(FIdNumber,Fname,FBirthDay,FRegDay,FWeight)
values('123456789120','jim',to_date('1989-09-26','yyyy-MM-dd HH 24:MI:SS'),to_date('2011-09-26','yyyy-MM-dd HH 24:MI:SS'),'65.02');
其他数据库:
insert into T_person(FIdNumber,Fname,FBirthDay,FRegDay,FWeight)
values('123456789120','jim','1989-09-26','2011-09-26','65.02');
2 日期,时间,日期时间与时间戳
Date,Time,DateTime.TimeStamp
Oracle:to_date(varchar2,'yyyy-MM-dd HH 24:MI:SS')
to_char(date,'yyyy-MM-dd HH 24:MI:SS')
3 取得当前日期:
Mysql NOW()函数,别名:SYSDATE(),CURRENT_TIMESTAMP
想得到不包含时间部分的当前日期:CURDATE(),别名:CURRENT_DATE;
想得到不包含日期部分的当前日期:CURTIME(),别名:CURRENT_TIME;
SQLServer :GETDATE()
select GETDATE() as 当前日期时间
返回的是时间戳
只得到日期部分:select convert(varchar(50),GETDATE(),101) as 当前日期
只得到时间部分:select convert(varchar(50),GETDATE(),108) as 当前时间
ORACLE:
SYSTIMESTAMP的值得到当前时间戳
select SYSTIMESTAMP from dual;时间戳
select SYSDATE from dual;日期时间
没有取得当前日期,当前时间的函数,可以借助to_char()函数
select to_char(SYSDATE,'yyyy-MM-dd') from dual;
select to_char(SYSDATE,'HH24:MI:SS') from dual;
4 日期的增减:
oracle 可以直接用'+'来进行日期的加法运算,计算单位为天
计算每个人出生日期2小时10分钟后的日期:
select FBirthDay+(2/24+10/60/24) from T_Person;
由于天和月之间不存在固定的换算率,所以无法使用加减运算实现一月为单位的计算
为此oracle提供了以月为单位的日期增减运算ADD_MONTHS()函数
格式为:ADD_MONTHS(date,number)
SQL:计算每个人的出生日期两个月零10天后以及3个月零10个小时前的日期时间
select FBirthDay,ADD_MONTH(FBrithDay,2)+10 as bfd,ADD_MONTH(FBrithDay,-3)-(10/24) as adf from T_Person;
5 计算日期差额
计算两个日期的差额
ORACLE可以在两个日期类型的数据之间使用'-'运算符,其计算结果为两个日期之间的天差数,结果是包含小数的
可以四舍五入,ROUND(SYSDATE-FBrithDay)
6 计算一个日期是星期几:
详情参考to_char(date,format)的format
DAY,日期属于周几,名字的形式表示
7 取得日期的指定部分:
COALESCE()函数
COALESCE()函数简化版NVL(ORACLE)