1. 1:取得当前日期是本月的第几周
  2. SQL> select to_char(sysdate,'YYYYMMDD W HH24:MI:SS') from dual;
  3. TO_CHAR(SYSDATE,'YY
  4. -------------------
  5. 20030327 4 18:16:09
  6. SQL> select to_char(sysdate,'W') from dual;
  7. T
  8. -
  9. 4
  10.  
  11. 2:取得当前日期是一个星期中的第几天,注意星期日是第一天
  12. SQL> select sysdate,to_char(sysdate,'D') from dual;
  13. SYSDATE T
  14. --------- -
  15. 27-MAR-03 5
  16.   类似:
  17.  
  18. select to_char(sysdate,'yyyy') from dual; --年
  19. select to_char(sysdate,'Q' from dual; --季
  20. select to_char(sysdate,'mm') from dual; --月
  21. select to_char(sysdate,'dd') from dual; --日
  22. ddd 年中的第几天
  23. WW 年中的第几个星期
  24. W 该月中第几个星期
  25. D 周中的星期几
  26. hh 小时(12)
  27. hh24 小时(24)
  28. Mi 分
  29. ss 秒
  30.  
  31. 3:取当前日期是星期几中文显示:
  32. SQL> select to_char(sysdate,'day') from dual;
  33. TO_CHAR(SYSDATE,'DAY')
  34. ----------------------
  35. 星期四
  36.  
  37. 4:如果一个表在一个date类型的字段上面建立了索引,如何使用
  38. alter session set NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'
  39.  
  40. 5: 得到当前的日期
  41. select sysdate from dual;
  42.  
  43. 6: 得到当天凌晨0点0分0秒的日期
  44. select trunc(sysdate) from dual;
  45. -- 得到这天的最后一秒
  46. select trunc(sysdate) + 0.99999 from dual;
  47. -- 得到小时的具体数值
  48. select trunc(sysdate) + 1/24 from dual;
  49. select trunc(sysdate) + 7/24 from dual;
  50.  
  51. 7.得到明天凌晨0点0分0秒的日期
  52. select trunc(sysdate+1) from dual;
  53. select trunc(sysdate)+1 from dual;
  54.  
  55. 8: 本月一日的日期
  56. select trunc(sysdate,'mm') from dual;
  57.  
  58. 9:得到下月一日的日期
  59. select trunc(add_months(sysdate,1),'mm') from dual;
  60.  
  61. 10:返回当前月的最后一天?
  62. select last_day(sysdate) from dual;
  63. select last_day(trunc(sysdate)) from dual;
  64. select trunc(last_day(sysdate)) from dual;
  65. select trunc(add_months(sysdate,1),'mm') - 1 from dual;
  66.  
  67. 11: 得到一年的每一天
  68. select trunc(sysdate,'yyyy')+ rn -1 date0
  69. from
  70. (select rownum rn from all_objects
  71. where rownum<366);
  72.  
  73. 12:今天是今年的第N天
  74. SELECT TO_CHAR(SYSDATE,'DDD') FROM DUAL;
  75.  
  76. 13:如何在给现有的日期加上2年
  77. select add_months(sysdate,24) from dual;
  78.  
  79. 14:判断某一日子所在年分是否为润年
  80. select decode(to_char(last_day(trunc(sysdate,'y')+31),'dd'),'29','闰年','平年') from dual;
  81.  
  82. 15:判断两年后是否为润年
  83. select decode(to_char(last_day(trunc(add_months(sysdate,24),'y')+31),
  84. 'dd'),'29','闰年','平年') from dual;
  85.  
  86. 16:得到日期的季度
  87. select ceil(to_number(to_char(sysdate,'mm'))/3) from dual;
  88. select to_char(sysdate, 'Q') from dual;
  89.  
  90. TO_DATE格式(以时间:2007-11-02 13:45:25为例)
  91.  
  92. Year:
  93. yy two digits 两位年 显示值:07
  94. yyy three digits 三位年 显示值:007
  95. yyyy four digits 四位年 显示值:2007
  96.  
  97. Month:
  98. mm number 两位月 显示值:11
  99. mon abbreviated 字符集表示 显示值:11月,若是英文版,显示nov
  100. month spelled out 字符集表示 显示值:11月,若是英文版,显示november
  101.  
  102. Day:
  103. dd number 当月第几天 显示值:02
  104. ddd number 当年第几天 显示值:02
  105. dy abbreviated 当周第几天简写 显示值:星期五,若是英文版,显示fri
  106. day spelled out 当周第几天全写 显示值:星期五,若是英文版,显示friday
  107. ddspth spelled out, ordinal twelfth
  108.  
  109. Hour:
  110. hh two digits 12小时进制 显示值:01
  111. hh24 two digits 24小时进制 显示值:13
  112.  
  113. Minute:
  114. mi two digits 60进制 显示值:45
  115.  
  116. Second:
  117. ss two digits 60进制 显示值:25
  118.  
  119. 其它
  120. Q digit 季度 显示值:4
  121. WW digit 当年第几周 显示值:44
  122. W digit 当月第几周 显示值:1
  123.  
  124. 24小时格式下时间范围为: 0:00:00 - 23:59:59....
  125. 12小时格式下时间范围为: 1:00:00 - 12:59:59 ....
  126.  
  127. 1. 日期和字符转换函数用法(to_date,to_char)
  128.  
  129. select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as nowTime from dual; //日期转化为字符串
  130. select to_char(sysdate,'yyyy') as nowYear from dual; //获取时间的年
  131. select to_char(sysdate,'mm') as nowMonth from dual; //获取时间的月
  132. select to_char(sysdate,'dd') as nowDay from dual; //获取时间的日
  133. select to_char(sysdate,'hh24') as nowHour from dual; //获取时间的时
  134. select to_char(sysdate,'mi') as nowMinute from dual; //获取时间的分
  135. select to_char(sysdate,'ss') as nowSecond from dual; //获取时间的秒
  136.  
  137. select to_date('2004-05-07 13:23:44','yyyy-mm-dd hh24:mi:ss') from dual//
  138.  
  139. 2.
  140. select to_char( to_date(222,'J'),'Jsp') from dual
  141.  
  142. 显示Two Hundred Twenty-Two
  143.  
  144. 3.求某天是星期几
  145. select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day') from dual;
  146. 星期一
  147. select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual;
  148. monday
  149. 设置日期语言
  150. ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN';
  151. 也可以这样
  152. TO_DATE ('2002-08-26', 'YYYY-mm-dd', 'NLS_DATE_LANGUAGE = American')
  153.  
  154. 4. 两个日期间的天数
  155. select floor(sysdate - to_date('20020405','yyyymmdd')) from dual;
  156.  
  157. 5. 时间为null的用法
  158. select id, active_date from table1
  159. UNION
  160. select 1, TO_DATE(null) from dual;
  161.  
  162. 注意要用TO_DATE(null)
  163.  
  164. 6.月份差
  165. a_date between to_date('20011201','yyyymmdd') and to_date('20011231','yyyymmdd')
  166. 那么12月31号中午12点之后和12月1号的12点之前是不包含在这个范围之内的。
  167. 所以,当时间需要精确的时候,觉得to_char还是必要的
  168.  
  169. 7. 日期格式冲突问题
  170. 输入的格式要看你安装的Oracle字符集的类型, 比如: US7ASCII, date格式的类型就是: '01-Jan-01'
  171. alter system set NLS_DATE_LANGUAGE = American
  172. alter session set NLS_DATE_LANGUAGE = American
  173. 或者在to_date中写
  174. select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual;
  175. 注意我这只是举了NLS_DATE_LANGUAGE,当然还有很多,
  176. 可查看
  177. select * from nls_session_parameters
  178. select * from V$NLS_PARAMETERS
  179.  
  180. 8.
  181. select count(*)
  182. from ( select rownum-1 rnum
  183. from all_objects
  184. where rownum <= to_date('2002-02-28','yyyy-mm-dd') - to_date('2002-
  185. 02-01','yyyy-mm-dd')+1
  186. )
  187. where to_char( to_date('2002-02-01','yyyy-mm-dd')+rnum-1, 'D' )
  188. not in ( '1', '7' )
  189.  
  190. 查找2002-02-28至2002-02-01间除星期一和七的天数
  191. 在前后分别调用DBMS_UTILITY.GET_TIME, 让后将结果相减(得到的是1/100秒, 而不是毫秒).
  192.  
  193. 9. 查找月份
  194. select months_between(to_date('01-31-1999','MM-DD-YYYY'),to_date('12-31-1998','MM-DD-YYYY')) "MONTHS" FROM DUAL;
  195. 1
  196. select months_between(to_date('02-01-1999','MM-DD-YYYY'),to_date('12-31-1998','MM-DD-YYYY')) "MONTHS" FROM DUAL;
  197. 1.03225806451613
  198.  
  199. 10. Next_day的用法
  200. Next_day(date, day)
  201.  
  202. Monday-Sunday, for format code DAY
  203. Mon-Sun, for format code DY
  204. 1-7, for format code D
  205.  
  206. 11
  207. select to_char(sysdate,'hh:mi:ss') TIME from all_objects
  208. 注意:第一条记录的TIME 与最后一行是一样的
  209. 可以建立一个函数来处理这个问题
  210. create or replace function sys_date return date is
  211. begin
  212. return sysdate;
  213. end;
  214.  
  215. select to_char(sys_date,'hh:mi:ss') from all_objects;
  216.  
  217. 12.获得小时数
  218. extract()找出日期或间隔值的字段值
  219. SELECT EXTRACT(HOUR FROM TIMESTAMP '2001-02-16 2:38:40') from offer
  220. SQL> select sysdate ,to_char(sysdate,'hh') from dual;
  221.  
  222. SYSDATE TO_CHAR(SYSDATE,'HH')
  223. -------------------- ---------------------
  224. 2003-10-13 19:35:21 07
  225.  
  226. SQL> select sysdate ,to_char(sysdate,'hh24') from dual;
  227.  
  228. SYSDATE TO_CHAR(SYSDATE,'HH24')
  229. -------------------- -----------------------
  230. 2003-10-13 19:35:21 19
  231.  
  232. 13.年月日的处理
  233. select older_date,
  234. newer_date,
  235. years,
  236. months,
  237. abs(
  238. trunc(
  239. newer_date-
  240. add_months( older_date,years*12+months )
  241. )
  242. ) days
  243.  
  244. from ( select
  245. trunc(months_between( newer_date, older_date )/12) YEARS,
  246. mod(trunc(months_between( newer_date, older_date )),12 ) MONTHS,
  247. newer_date,
  248. older_date
  249. from (
  250. select hiredate older_date, add_months(hiredate,rownum)+rownum newer_date
  251. from emp
  252. )
  253. )
  254.  
  255. 14.处理月份天数不定的办法
  256. select to_char(add_months(last_day(sysdate) +1, -2), 'yyyymmdd'),last_day(sysdate) from dual
  257.  
  258. 16.找出今年的天数
  259. select add_months(trunc(sysdate,'year'), 12) - trunc(sysdate,'year') from dual
  260.  
  261. 闰年的处理方法
  262. to_char( last_day( to_date('02' | | :year,'mmyyyy') ), 'dd' )
  263. 如果是28就不是闰年
  264.  
  265. 17.yyyy与rrrr的区别
  266. 'YYYY99 TO_C
  267. ------- ----
  268. yyyy 99 0099
  269. rrrr 99 1999
  270. yyyy 01 0001
  271. rrrr 01 2001
  272.  
  273. 18.不同时区的处理
  274. select to_char( NEW_TIME( sysdate, 'GMT','EST'), 'dd/mm/yyyy hh:mi:ss') ,sysdate
  275. from dual;
  276.  
  277. 19.5秒钟一个间隔
  278. Select TO_DATE(FLOOR(TO_CHAR(sysdate,'SSSSS')/300) * 300,'SSSSS') ,TO_CHAR(sysdate,'SSSSS')
  279. from dual
  280.  
  281. 2002-11-1 9:55:00 35786
  282. SSSSS表示5位秒数
  283.  
  284. 20.一年的第几天
  285. select TO_CHAR(SYSDATE,'DDD'),sysdate from dual
  286.  
  287. 310 2002-11-6 10:03:51
  288.  
  289. 21.计算小时,分,秒,毫秒
  290. select
  291. Days,
  292. A,
  293. TRUNC(A*24) Hours,
  294. TRUNC(A*24*60 - 60*TRUNC(A*24)) Minutes,
  295. TRUNC(A*24*60*60 - 60*TRUNC(A*24*60)) Seconds,
  296. TRUNC(A*24*60*60*100 - 100*TRUNC(A*24*60*60)) mSeconds
  297. from
  298. (
  299. select
  300. trunc(sysdate) Days,
  301. sysdate - trunc(sysdate) A
  302. from dual
  303. )
  304.  
  305. select * from tabname
  306. order by decode(mode,'FIFO',1,-1)*to_char(rq,'yyyymmddhh24miss');
  307.  
  308. //
  309. floor((date2-date1) /365) 作为年
  310. floor((date2-date1, 365) /30) 作为月
  311. d(mod(date2-date1, 365), 30)作为日.
  312.  
  313. 23.next_day函数 返回下个星期的日期,day1-7或星期日-星期六,1表示星期日
  314. next_day(sysdate,6)是从当前开始下一个星期五。后面的数字是从星期日开始算起。
  315. 1 2 3 4 5 6 7
  316.  
  317. ---------------------------------------------------------------
  318.  
  319. select (sysdate-to_date('2003-12-03 12:55:45','yyyy-mm-dd hh24:mi:ss'))*24*60*60 from ddual
  320. 日期 返回的是天 然后 转换为ss
  321.  
  322. 24,round[舍入到最接近的日期](day:舍入到最接近的星期日)
  323. select sysdate S1,
  324. round(sysdate) S2 ,
  325. round(sysdate,'year') YEAR,
  326. round(sysdate,'month') MONTH ,
  327. round(sysdate,'day') DAY from dual
  328.  
  329. 25,trunc[截断到最接近的日期,单位为天] ,返回的是日期类型
  330. select sysdate S1,
  331. trunc(sysdate) S2, //返回当前日期,无时分秒
  332. trunc(sysdate,'year') YEAR, //返回当前年的1月1日,无时分秒
  333. trunc(sysdate,'month') MONTH , //返回当前月的1日,无时分秒
  334. trunc(sysdate,'day') DAY //返回当前星期的星期天,无时分秒
  335. from dual
  336.  
  337. 26,返回日期列表中最晚日期
  338. select greatest('01-1月-04','04-1月-04','10-2月-04') from dual
  339.  
  340. 27.计算时间差
  341. 注:oracle时间差是以天数为单位,所以换算成年月,日
  342.  
  343. select floor(to_number(sysdate-to_date('2007-11-02 15:55:03','yyyy-mm-dd hh24:mi:ss'))/365) as spanYears from dual //时间差-年
  344. select ceil(moths_between(sysdate-to_date('2007-11-02 15:55:03','yyyy-mm-dd hh24:mi:ss'))) as spanMonths from dual //时间差-月
  345. select floor(to_number(sysdate-to_date('2007-11-02 15:55:03','yyyy-mm-dd hh24:mi:ss'))) as spanDays from dual //时间差-天
  346. select floor(to_number(sysdate-to_date('2007-11-02 15:55:03','yyyy-mm-dd hh24:mi:ss'))*24) as spanHours from dual //时间差-时
  347. select floor(to_number(sysdate-to_date('2007-11-02 15:55:03','yyyy-mm-dd hh24:mi:ss'))*24*60) as spanMinutes from dual //时间差-分
  348. select floor(to_number(sysdate-to_date('2007-11-02 15:55:03','yyyy-mm-dd hh24:mi:ss'))*24*60*60) as spanSeconds from dual //时间差-秒
  349.  
  350. 28.更新时间
  351. 注:oracle时间加减是以天数为单位,设改变量为n,所以换算成年月,日
  352. select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),to_char(sysdate+n*365,'yyyy-mm-dd hh24:mi:ss') as newTime from dual //改变时间-年
  353. select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),add_months(sysdate,n) as newTime from dual //改变时间-月
  354. select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),to_char(sysdate+n,'yyyy-mm-dd hh24:mi:ss') as newTime from dual //改变时间-日
  355. select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),to_char(sysdate+n/24,'yyyy-mm-dd hh24:mi:ss') as newTime from dual //改变时间-时
  356. select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),to_char(sysdate+n/24/60,'yyyy-mm-dd hh24:mi:ss') as newTime from dual //改变时间-分
  357. select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),to_char(sysdate+n/24/60/60,'yyyy-mm-dd hh24:mi:ss') as newTime from dual //改变时间-秒
  358.  
  359. 29.查找月的第一天,最后一天
  360. SELECT Trunc(Trunc(SYSDATE, 'MONTH') - 1, 'MONTH') First_Day_Last_Month,
  361. Trunc(SYSDATE, 'MONTH') - 1 / 86400 Last_Day_Last_Month,
  362. Trunc(SYSDATE, 'MONTH') First_Day_Cur_Month,
  363. LAST_DAY(Trunc(SYSDATE, 'MONTH')) + 1 - 1 / 86400 Last_Day_Cur_Month
  364. FROM dual;
  365.  
  366. 转自:http://262002954-qq-com.iteye.com/blog/1119702

oracle之时间转换的更多相关文章

  1. oracle数据库时间转换

    select * from TAB where 时间 BETWEEN to_date('2011-02-01 22:03:40','yyyy-mm-dd hh24:mi:ss') and to_dat ...

  2. Oracle修改时间报:ORA-01830: 日期格式图片在转换整个输入字符串之前结束的解决办法

    1.错误原因: date类型不能包含秒以后的精度. 如日期:2010-01-01 20:02:20.0 解决方法:将日期秒以后的精度去除, to_date(substr(INVOICE_DATE,1, ...

  3. oracle时间转换查询

    查询oracle 数据库时要查询某一字段的最大时间或者最小时间,因为oracle的时间点 精确到毫秒 甚至更高精度级别 根据字段来转换成对应的时间格式: SELECT TO_CHAR(MAX(crea ...

  4. C#实现多级子目录Zip压缩解压实例 NET4.6下的UTC时间转换 [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了 asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程 asp.net core异步进行新增操作并且需要判断某些字段是否重复的三种解决方案 .NET Core开发日志

    C#实现多级子目录Zip压缩解压实例 参考 https://blog.csdn.net/lki_suidongdong/article/details/20942977 重点: 实现多级子目录的压缩, ...

  5. Oracle日期格式转换,tochar(),todate()

    Oracle日期格式转换 本文主要介绍Oracle中的日期转换. 1. 日期转化为字符串 (以2016年10月20日为例) select to_char(sysdate,'yyyy-mm-dd hh2 ...

  6. Oracle日期时间函数大全

    ORACLE日期时间函数大全 TO_DATE格式(以时间:2007-11-02 13:45:25为例) Year: yy two digits 两位年 显示值:07 yyy three digits ...

  7. ORACLE对时间日期的处理(转)

    共三部分: 第一部分:oracle sql日期比较: http://www.cnblogs.com/sopost/archive/2011/12/03/2275078.html 第二部分:Oracle ...

  8. Java 时间转换问题总结

    这几天开发中遇到时间转换出错的问题,特总结如下:   ========================================================================= ...

  9. [转]ORACLE日期时间函数大全

    本文转自:http://www.cnblogs.com/chuncn/archive/2009/04/29/1381282.html ORACLE日期时间函数大全 TO_DATE格式(以时间: ::2 ...

随机推荐

  1. MySQL 慢查询配置

    MYSQL慢查询 1. 慢查询有什么用? 它能记录下所有执行超过long_query_time时间的SQL语句, 帮你找到执行慢的SQL, 方便我们对这些SQL进行优化. 2. 如何开启慢查询? 首先 ...

  2. 关于Adobe Flash 11.3 引起的火狐使用问题

    Adobe Flash 更新到11.3之后,为火狐引入Flash沙盒安全模式,但同时,又造成了部分兼容性问题,导致 Windows vista及 Windows 7上部分火狐崩溃,并致使一些使用Fla ...

  3. JavaScript Arguments 实现可变参数的函数,以及函数的递归调用

    //可变参数的函数 注:也可以使用对象作为参数来实现 function Max() { var temp = arguments[0] || 0; for (var i = 1; i < arg ...

  4. JavaScript Nested Function 的时空和身份属性

    JavaScript 的function 不仅仅是一等公民,简直就是特殊公民.它有许多独特的特征: 1) 它是object,可以存储,传递,附加属性. 2) 它可以有lexical closure, ...

  5. eclipse在当前项目里面批量替换所有单词

    ctrl+f里面只能单个文件用,要整个项目批量替换. 1. 先选中你要替换字符串, 2. 再菜单栏中找到Search→Text→Project,这样就会在整个项目中查找单词. 3. 然后在Search ...

  6. redis php

    redis php 学习1.连接$redis = new redis();$result = $redis->connect('127.0.0.1',6379); 2.set$redis = n ...

  7. 获取元素位置信息:getBoundingClientRect

    一个神奇的方法. 一.历史 偷个懒,上个传送门:http://www.cnblogs.com/2050/archive/2012/02/01/2335211.html 二.介绍 DOM元素方法,返回一 ...

  8. Ubuntu下搭建本地WordPress站点

    想在本地搭建WordPress博客站点作测试用?本教程一步一步教您在Linux上搭建一个LAMP(Linux, Apache, MySQL, PHP)服务器并部署WordPress博客. 请注意在复制 ...

  9. MySQL和MsSQL实时自动同步---SyncNavigator 数据库同步软件

    需要MySQL数据库支持的狐友们有福了,MySQL和MsSQL实时自动同步---SyncNavigator 数据库同步软件   使用SyncNavigator轻松实现数据库异地同步.断点续传.异构同步 ...

  10. EF学习

    一.EF介绍 实体框架 Entity Framework 是ADO.NET 中的一组支持开发面向数据的软件应用程序的技术.在 EF 中的实体数据模型(EDM)由以下三种模型和具有相应文件扩展名的映射文 ...