热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

oracledate操作

使用oracle的date类型时,最好使用24小时制。date类型精确的秒。oracle的日期在24小时制中00:00:00在Oracle中表示为叫做上午12点,也就是零点。我们中午12点叫做下午12点。呵呵。世界是这样循环的:上午12点-上午12点01-上午1点--上午11:59:59

使用oracle的date类型时,最好使用24小时制。date类型精确的秒。 oracle的日期在24小时制中00:00:00 在Oracle中表示为叫做上午12点,也就是零点。我们中午12点叫做下午12点。呵呵。 世界是这样循环的 : 上午12点 -上午12点01 -上午1点 --上午11:59 :59

使用oracle的date类型时,最好使用24小时制。date类型精确的秒。
oracle的日期在24小时制中00:00:00 在Oracle中表示为叫做上午12点,也就是零点。我们中午12点叫做下午12点。呵呵。
世界是这样循环的 : 上午12点 -上午12点01 -上午1点 --上午11:59 :59 --下午12点 - 下午12点 02 - 下午1点 -下午11:59:59

关于日期函数 add_months (d,n) 和last_day(d),round(d,【fmt】)
add_months 中的d 如果没有时间值,结果为下个月的当前日的开始日期 -00:00:00上午12点。 如果有时间值 ,结果为下月的当前日的时间加时间值。
如果d为当前月的最后一天,结果为下个月的最后一天。哈哈。
例如:add_months(to_date('2007-02-27 12:01','yyyy-mm-dd hh24:mi'),1) = 2007-3-27 12:01:00
add_months(to_date('2007-02-27','yyyy-mm-dd '),1) = 2007-03-27 00:00:00
add_months(to_date('2007-02-28 12:01','yyyy-mm-dd hh24:mi'),1) = 2007-3-31 12:01:00
last_day 当前月的最后一天的00:00。


round 四舍五入 ,格式为year ,舍入到1月1日, month ,舍入到该月第一日, 大于16日,为下月。day 最近的星期天。
例如:
round( (to_date('2007-10-19 13:00:00 ','yyyy-mm-dd hh24:mi:ss') ),'day' ) = 2007-10-21
trunc 与round相似,但不四舍五入。

trunc(d,fmt)

extract (fmt from d)
fmt 可取为 year, month, day , hour, minute ,second .

总结:oracle的日期函数默认操作日期,既不包括时间。 如果有时间的话就加上时间,但不做处理。默认都是day。

Oracle关于时间/日期的操作


1.日期时间间隔操作
  当前时间减去7分钟的时间
  select sysdate,sysdate - interval ’7’ MINUTE from dual
  当前时间减去7小时的时间
  select sysdate - interval ’7’ hour from dual
  当前时间减去7天的时间
  select sysdate - interval ’7’ day from dual
  当前时间减去7月的时间
  select sysdate,sysdate - interval ’7’ month from dual
  当前时间减去7年的时间
  select sysdate,sysdate - interval ’7’ year from dual
  时间间隔乘以一个数字
  select sysdate,sysdate - 8 *interval ’2’ hour from dual
2.日期到字符操作
  select sysdate,to_char(sysdate,’yyyy-mm-dd hh24:mi:ss’) from dual
  select sysdate,to_char(sysdate,’yyyy-mm-dd hh:mi:ss’) from dual
  select sysdate,to_char(sysdate,’yyyy-ddd hh:mi:ss’) from dual
  select sysdate,to_char(sysdate,’yyyy-mm iw-d hh:mi:ss’) from dual
  参考oracle的相关关文档(ORACLE901DOC/SERVER.901/A90125/SQL_ELEMENTS4.HTM#48515)
3. 字符到日期操作
  select to_date(’2003-10-17 21:15:37’,’yyyy-mm-dd hh24:mi:ss’) from dual
  具体用法和上面的to_char差不多。
4. trunk/ ROUND函数的使用
  select trunc(sysdate ,’YEAR’) from dual
  select trunc(sysdate ) from dual
  select to_char(trunc(sysdate ,’YYYY’),’YYYY’) from dual
5.oracle有毫秒级的数据类型
  --返回当前时间 年月日小时分秒毫秒
  select to_char(current_timestamp(5),’DD-MON-YYYY HH24:MI:SSxFF’) from dual;
  --返回当前 时间的秒毫秒,可以指定秒后面的精度(最大=9)
  select to_char(current_timestamp(9),’MI:SSxFF’) from dual;
6.计算程序运行的时间(ms)
  declare
  type rc is ref cursor;
  l_rc rc;
  l_dummy all_objects.object_name%type;
  l_start number default dbms_utility.get_time;
  begin
  for I in 1 .. 1000
  loop
  open l_rc for
  ’select object_name from all_objects ’||
  ’where object_id = ’ || i;
  fetch l_rc into l_dummy;
  close l_rc;
  end loop;
  dbms_output.put_line
  ( round( (dbms_utility.get_time-l_start)/100, 2 ) ||
  ’ seconds...’ );
  end;

№1:取得当前日期是本月的第几周

SQL> select to_char(sysdate,'YYYYMMDD W HH24:MI:SS') from dual;

TO_CHAR(SYSDATE,'YY
-------------------
20030327 4 18:16:09

SQL> select to_char(sysdate,'W') from dual;

T
-
4

№2:取得当前日期是一个星期中的第几天,注意星期日是第一天

SQL> select sysdate,to_char(sysdate,'D') from dual;

SYSDATE T
--------- -
27-MAR-03 5

类似:

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

№3:取当前日期是星期几中文显示:

SQL> select to_char(sysdate,'day') from dual;

TO_CHAR(SYSDATE,'DAY')
----------------------
星期四

№4:如果一个表在一个date类型的字段上面建立了索引,如何使用

alter session set NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'


№5: 得到当前的日期
select sysdate from dual;

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

-- 得到这天的最后一秒
select trunc(sysdate) + 0.99999 from dual;

-- 得到小时的具体数值
select trunc(sysdate) + 1/24 from dual;

select trunc(sysdate) + 7/24 from dual;

№7:得到明天凌晨0点0分0秒的日期

select trunc(sysdate+1) from dual;

select trunc(sysdate)+1 from dual;


№8: 本月一日的日期
select trunc(sysdate,'mm') from dual;


№9:得到下月一日的日期
select trunc(add_months(sysdate,1),'mm') from dual;

№10:返回当前月的最后一天?
select last_day(sysdate) from dual;
select last_day(trunc(sysdate)) from dual;
select trunc(last_day(sysdate)) from dual;
select trunc(add_months(sysdate,1),'mm') - 1 from dual;


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


№12:今天是今年的第N天
SELECT TO_CHAR(SYSDATE,'DDD') FROM DUAL;

№13:如何在给现有的日期加上2年
select add_months(sysdate,24) from dual;

№14:判断某一日子所在年分是否为润年
select decode(to_char(last_day(trunc(sysdate,'y')+31),'dd'),'29','闰年','平年') from dual;

№15:判断两年后是否为润年
select decode(to_char(last_day(trunc(add_months(sysdate,24),'y')+31),'dd'),'29','闰年','平年') from dual;


№16:得到日期的季度

select ceil(to_number(to_char(sysdate,'mm'))/3) from dual;

select to_char(sysdate, 'Q') from dual;

推荐阅读
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 在当前众多持久层框架中,MyBatis(前身为iBatis)凭借其轻量级、易用性和对SQL的直接支持,成为许多开发者的首选。本文将详细探讨MyBatis的核心概念、设计理念及其优势。 ... [详细]
  • 在使用 DataGridView 时,如果在当前单元格中输入内容但光标未移开,点击保存按钮后,输入的内容可能无法保存。只有当光标离开单元格后,才能成功保存数据。本文将探讨如何通过调用 DataGridView 的内置方法解决此问题。 ... [详细]
  • 本文详细介绍了如何在 Linux 平台上安装和配置 PostgreSQL 数据库。通过访问官方资源并遵循特定的操作步骤,用户可以在不同发行版(如 Ubuntu 和 Red Hat)上顺利完成 PostgreSQL 的安装。 ... [详细]
  • 如何在PostgreSQL中查看数据表
    本文将指导您使用pgAdmin工具连接到PostgreSQL数据库,并展示如何浏览和查找其中的数据表。通过简单的步骤,您可以轻松访问所需的表结构和数据。 ... [详细]
  • 利用存储过程构建年度日历表的详细指南
    本文将介绍如何使用SQL存储过程创建一个完整的年度日历表。通过实例演示,帮助读者掌握存储过程的应用技巧,并提供详细的代码解析和执行步骤。 ... [详细]
  • 本文介绍了如何通过 Maven 依赖引入 SQLiteJDBC 和 HikariCP 包,从而在 Java 应用中高效地连接和操作 SQLite 数据库。文章提供了详细的代码示例,并解释了每个步骤的实现细节。 ... [详细]
  • 在使用SQL Server进行动态SQL查询时,如果遇到LIKE语句无法正确返回预期结果的情况,通常是因为参数传递方式不当。本文将详细探讨这一问题,并提供解决方案及相关的技术背景。 ... [详细]
  • 本文介绍如何通过创建替代插入触发器,使对视图的插入操作能够正确更新相关的基本表。涉及的表包括:飞机(Aircraft)、员工(Employee)和认证(Certification)。 ... [详细]
  • MySQL缓存机制深度解析
    本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • SQLite 动态创建多个表的需求在网络上有不少讨论,但很少有详细的解决方案。本文将介绍如何在 Qt 环境中使用 QString 类轻松实现 SQLite 表的动态创建,并提供详细的步骤和示例代码。 ... [详细]
  • 精选30本C# ASP.NET SQL中文PDF电子书合集
    欢迎订阅我们的技术博客,获取更多关于C#、ASP.NET和SQL的最新资讯和资源。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
author-avatar
Theduck_king
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有