前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >sql基础知识:日期的常用用法

sql基础知识:日期的常用用法

作者头像
用户1154259
发布2018-01-17 14:35:41
7830
发布2018-01-17 14:35:41
举报

日期操作

代码语言:javascript
复制
select sysdate,add_months(sysdate,12) from dual; -- + 1 year
select sysdate,add_months(sysdate,1) from dual; -- + 1 month
select sysdate,to_char(sysdate+7,'yyyy-mm-dd HH24:MI:SS') from dual; -- + 1 week
select sysdate,to_char(sysdate+1,'yyyy-mm-dd HH24:MI:SS') from dual; -- + 1 day
select sysdate,to_char(sysdate+1/24,'yyyy-mm-dd HH24:MI:SS') from dual; -- + 1 hour
select sysdate,to_char(sysdate+1/24/60,'yyyy-mm-dd HH24:MI:SS') from dual; -- + 1 min
select sysdate,to_char(sysdate+1/24/60/60,'yyyy-mm-dd HH24:MI:SS') from dual; -- + 1 second

select sysdate,add_months(sysdate,-12) from dual; -- - 1 year
select sysdate,add_months(sysdate,-1) from dual; -- - 1 month
select sysdate,to_char(sysdate-7,'yyyy-mm-dd HH24:MI:SS') from dual; -- - 1 week
select sysdate,to_char(sysdate-1,'yyyy-mm-dd HH24:MI:SS') from dual; -- - 1 day
select sysdate,to_char(sysdate-1/24,'yyyy-mm-dd HH24:MI:SS') from dual; -- - 1 hour
select sysdate,to_char(sysdate-1/24/60,'yyyy-mm-dd HH24:MI:SS') from dual; -- - 1 min
select sysdate,to_char(sysdate-1/24/60/60,'yyyy-mm-dd HH24:MI:SS') from dual; -- - 1 second

日期处理

代码语言:javascript
复制
select sysdate,to_char(sysdate,'yyyy-mm-dd HH24:MI:SS') from dual;

select sysdate,to_char(sysdate,'yyyy') from dual;--年
select sysdate,to_char(sysdate,'Q') from dual;--季度
select sysdate,to_char(sysdate,'mm') from dual;--月
select sysdate,to_char(sysdate,'dd') from dual;--日
select sysdate,to_char(sysdate,'ddd') from dual;--年中的第几天
select sysdate,to_char(sysdate,'WW') from dual;--年中的第几个星期
select sysdate,to_char(sysdate,'W') from dual;--该月的第几个星期
select sysdate,to_char(sysdate,'D') from dual;--周中的第几天
select sysdate,to_char(sysdate,'hh') from dual;--12进制 的小时
select sysdate,to_char(sysdate,'hh24') from dual;--24进制 的小时
select sysdate,to_char(sysdate,'Mi') from dual;--分钟
select sysdate,to_char(sysdate,'ss') from dual;--秒

常用的日期操作

代码语言:javascript
复制
-- 得到当前的日期
select sysdate from dual;

-- 得到当天凌晨0点0分0秒的日期
select trunc(sysdate) from dual;

-- 得到当天的最后一秒 x年x月x日 23:59:59
select trunc(sysdate)+0.99999 from dual;

-- 得到明天凌晨0点0分0秒的日期
select trunc(sysdate)+1 from dual;

-- 得到本月1号的日期
select trunc(sysdate,'mm') from dual;

-- 得到下个月1号的日期
select trunc(add_months(sysdate,1),'mm') from dual; 

-- 得到当月的最后一天
select last_day(sysdate),
       last_day(trunc(sysdate)),
       trunc(last_day(sysdate)),
       trunc(add_months(sysdate,1),'mm') - 1 
from dual; 

select * from all_objects;

-- 得到一年的每一天
select trunc(sysdate,'yyyy')+ rn -1 date0 
from 
(select rownum rn from all_objects 
where rownum<366); 

-- 判断是闰年还是平年
select decode(to_char(last_day(trunc(sysdate,'y')+31),'dd'),'29','闰年','平年') from dual; 
-- 解析
select trunc(sysdate,'y') from dual;--获取当前年份的1月1日
select trunc(sysdate,'y')+31 from dual;--获取当前年份的2月1日
select to_char(last_day(trunc(sysdate,'y')+31),'dd') from dual;--获取2月份的最后一天
注意
  • ALL_OBJECTS describes all objects accessible to the current user. 描述当前用户有访问权限的所有对象
  • DBA_OBJECTS describes all objects in the database. 描述了数据库中的所有对象
  • USER_OBJECTS describes all objects owned by the current user. 描述了当前用户所拥有的所有对象

千万不要觉得all_和dba_视图都是所有对象的意思, all_和权限有关; 所以出现【不同用户访问all_objects视图,相同过滤条件,结果不同 (例如:"A用户访问all_objects视图过滤B.T1表有数据,而C用户也访问all_objects视图过滤B.T1表却没有数据" )】是正常的,是因为C用户没有访问B.T1表权限,用dba_objects可以解决; 所以适当的选择 dba_和all_*视图。

参考

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-10-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 日期操作
  • 日期处理
  • 常用的日期操作
    • 注意
    • 参考
    相关产品与服务
    数据库
    云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档