当前位置:数据库 > Oracle >>

跪求oracle获取年和月份的函数

答案:下面是时间经典的SQL查询: select to_char(sysdate,'yyyy-mm-dd:hh24:mi:ss:pm:dy') from dual; 年 月 日 24制小时 分 秒 上/下午 星期中文; --获取11月天数--select to_char(last_day(to_date('2010-11-1','YYYY-MM-DD')),'DD') from dual; --获取12月天数--select to_char(last_day(to_date('2010-12-1','YYYY-MM-DD')),'DD') from dual; 显示上个礼拜一到礼拜日 SELECT to_char(SYSDATE,'yyyymmdd')-to_number(to_char(SYSDATE,'d')-1)-6,to_char(SYSDATE,'yyyymmdd')-to_number(to_char(SYSDATE,'d')-1) from dual 1.显示本月第一天 SELECT DATEADD(mm,DATEDIFF(mm,0,getdate()),0) select convert(datetime,convert(varchar(8),getdate(), 120)+'01',120) 2.显示本月最后一天 select dateadd(day,-1,convert(datetime,convert (varchar(8),dateadd(month,1,getdate()),120)+'01',120)) SELECT dateadd(ms,-3,DATEADD(mm,DATEDIFF(m,0,getdate())+1,0)) 3.上个月的最后一天 SELECT dateadd(ms,-3,DATEADD(mm,DATEDIFF(mm,0,getdate()),0)) 4.本月的第一个星期一i select DATEADD(wk,DATEDIFF(wk,0, dateadd(dd,6-datepart( day,getdate()),getdate())),0) 5.本年的第一天 SELECT DATEADD(yy,DATEDIFF(yy,0,getdate()),0) 6.本年的最后一天 SELECT dateadd(ms,-3,DATEADD(yy,DATEDIFF(yy,0,getdate())+1,0)) 7.去年的最后一天 SELECT dateadd(ms,-3,DATEADD(yy,DATEDIFF(yy,0,getdate()),0)) 8.本季度的第一天 SELECT DATEADD(qq,DATEDIFF(qq,0,getdate()),0) 9.本周的星期一 SELECT DATEADD(wk,DATEDIFF(wk,0,getdate()),0) 10.查询本月的记录 select * from tableName where DATEPART(mm, theDate) =DATEPART(mm, GETDATE()) and DATEPART(yy, theDate) = DATEPART(yy, GETDATE()) 11.查询本周的记录 select * from tableName where DATEPART(wk, theDate) = DATEPART (wk, GETDATE()) and DATEPART(yy, theDate) = DATEPART(yy, GETDATE()) 12查询本季的记录 注:其中:GETDATE()是获得系统时间的函数。 select * from tableName where DATEPART(qq, theDate) = DATEPART (qq, GETDATE()) and DATEPART(yy, theDate) = DATEPART(yy, GETDATE()) 13.获取当月总天数: select DATEDIFF(dd,getdate(),DATEADD (mm, 1, getdate())) select datediff(day, dateadd(mm, datediff(mm,'',getdate()), ''), dateadd(mm, datediff(mm,'',getdate()), '1900-02-01')) 14.获取当前为星期几 DATENAME(weekday, getdate())
其他:select   to_char(sysdate, 'yyyy ')   from   dual; 
select   to_char(sysdate, 'mm ')   from   dual; 
select   to_char(sysdate, 'dd ')   from   dual; select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual --获取全格式
select to_char(sysdate,'yyyy-mm-dd') from dual --获取年月日
select to_char(sysdate,'yyyy') from dual --获取年
select to_char(sysdate,'mm') from dual --获取月份
执行一下,这几个大致就会了解了 。都是用sysdate当前日期的,如果要把其他日期格式转化也可以 --年
SELECT TO_CHAR(SYSDATE, 'YYYY')
FROM   DUAL;
--月份
SELECT TO_CHAR(SYSDATE, 'MM')
FROM   DUAL;
--日期
SELECT TO_CHAR(SYSDATE, 'DD')
FROM   DUAL; 如果 Oracle 10 可以使用 可以使用 EXTRACT 函数

下面是以前执行的例子:

SQL> SELECT '年' AS "标题", EXTRACT(YEAR FROM SYSDATE) AS "数值" FROM dual UNION ALL
  2  SELECT '月' AS "标题", EXTRACT(MONTH FROM SYSDATE) AS "数值" FROM dual UNION ALL
  3  SELECT '日' AS "标题", EXTRACT(DAY FROM SYSDATE) AS "数值" FROM dual;

标       数值
-- ----------
年       2011
月          6
日         14 

上一个:Oracle中如何删除表中已有字段
下一个:求oracle热备份脚本

Oracle
MySQL
Access
SQLServer
DB2
Excel
SQLite
SYBASE
Postgres
如果你遇到数据库难题:
请访问www.zzzyk.com 试试
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,