网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 交易代码 > SQL语法 > 正文

sql日期

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务
/**
    *
    *@paramanObject:thisWeek=本周;nextWeek=下周
    *@returnmonday
    */
    publicStringgetMonday(StringanObject){
    Stringsql="";
    Stringtime="";
    if("thisWeek".equals(anObject))
    sql="Selectcasewhento_char(sysdate,'D')=1thento_char(sysdate-to_char(sysdate,'D')-5,'yyyy-mm-dd')elseto_char(sysdate-to_char(sysdate,'D')+2,'yyyy-mm-dd')endfromdual";
    elseif("nextWeek".equals(anObject))
    sql="Selectcasewhento_char(sysdate,'D')=1thento_char(sysdate-to_char(sysdate,'D')+2,'yyyy-mm-dd')elseto_char(sysdate-to_char(sysdate,'D')+9,'yyyy-mm-dd')endfromdual";
    elseif("lastWeek".equals(anObject))//上周
    sql="Selectcasewhento_char(sysdate,'D')=1thento_char(sysdate-to_char(sysdate,'D')-12,'yyyy-mm-dd')elseto_char(sysdate-to_char(sysdate,'D')-5,'yyyy-mm-dd')endfromdual";
    time=this.getToCharSysdateParameter(sql);
    returntime;
    }
    /**
    *
    *@paramanObject:thisWeek=本周;nextWeek=下周;lastWeek=上周
    *@returnsunday
    */
    publicStringgetSunday(StringanObject){
    Stringsql="";
    Stringtime="";
    if("thisWeek".equals(anObject))//本周
    sql="Selectto_char(sysdate,'D'),casewhento_char(sysdate,'D')=1thento_char(sysdate-to_char(sysdate,'D')+1,'yyyy-mm-dd')elseto_char(sysdate-to_char(sysdate,'D')+8,'yyyy-mm-dd')endfromdual";
    elseif("nextWeek".equals(anObject))//下周
    sql="Selectto_char(sysdate,'D'),casewhento_char(sysdate,'D')=1thento_char(sysdate-to_char(sysdate,'D')+8,'yyyy-mm-dd')elseto_char(sysdate-to_char(sysdate,'D')+15,'yyyy-mm-dd')endfromdual";
    elseif("lastWeek".equals(anObject))//上周
    sql="Selectcasewhento_char(sysdate,'D')=1thento_char(sysdate-to_char(sysdate,'D')-6,'yyyy-mm-dd')elseto_char(sysdate-to_char(sysdate,'D')+1,'yyyy-mm-dd')endfromdual";
    time=this.getToCharSysdateParameter(sql);
    returntime;
    }
    
    
    --*****************
    多种日期格式:
    YYYY:四位表示的年份
    YYY,YY,Y:年份的最后三位、两位或一位,缺省为当前世纪
    MM:01~12的月份编号
    MONTH:九个字符表示的月份,右边用空格填补
    MON:三位字符的月份缩写
    WW:一年中的星期
    D:星期中的第几天
    DD:月份中的第几天
    DDD:年所中的第几天
    DAY:九个字符表示的天的全称,右边用空格补齐
    HH,HH12:一天中的第几个小时,12进制表示法
    HH24:一天中的第几个小时,取值为00~23
    MI:一小时中的分钟
    SS:一分钟中的秒
    SSSSS:从午夜开始过去的秒数
    设置日期语言
    ALTERSESSIONSETNLS_DATE_LANGUAGE='AMERICAN';
    一。基本运算部分
    A)to_char函数
    1.年的运算
    1.1Y或YY或YYY年的最后一位,两位或三位,YYYY四位年份,IYYYISO标准的四位年份
    SQL>Selectto_char(sysdate,'Y'),to_char(sysdate,'YY'),to_char(sysdate,'YYY'),to_char(sysdate,'YYYY'),TO_CHAR(SYSTIMESTAMP,'IYYY')fromdual;
    TO_CHAR(SYSDATE,'Y')TO_CHAR(SYSDATE,'YY')TO_CHAR(SYSDATE,'YYY')TO_CHAR(SYSDATE,'YYYY')TO_CHAR(SYSTIMESTAMP,'IYYY')
    ------------------------------------------------------------------------------------------------------------------
    90900920092009
    1.2YEAR
    SQL>SELECTTO_CHAR(SYSTIMESTAMP,'YEAR')fromdual;
    TO_CHAR(SYSTIMESTAMP,'YEAR')
    ------------------------------------------
    TWOTHOUSANDNINE
    SQL>SELECTTO_CHAR(SYSTIMESTAMP,'YEAR','NLS_DATE_LANGUAGE=American')fromdual;
    TO_CHAR(SYSTIMESTAMP,'YEAR','N
    ------------------------------------------
    TWOTHOUSANDNINE
    2.Q季度1~3月为第一季度,2表示第二季度。
    SQL>Selectto_char(sysdate,'Q')fromdual;
    TO_CHAR(SYSDATE,'Q')
    --------------------
    1
    3.月份数
    3.1MM月份数
    SQL>Selectto_char(sysdate,'MM')fromdual;
    TO_CHAR(SYSDATE,'MM')
    ---------------------
    02
    3.2Month用9个字符长度表示的月份名
    SQL>Selectto_char(sysdate,'Month')fromdual;
    TO_CHAR(SYSDATE,'MONTH')
    ------------------------
    2月
    3.3月份函数汇总:
    SQL>Selectto_char(sysdate,'Month'),
    2to_char(sysdate,'mon'),
    3to_char(sysdate,'Month'),
    4to_char(sysdate,'mon','NLS_DATE_LANGUAGE=American'),--三位字符的月份缩写全部小写
    5to_char(sysdate,'Mon','NLS_DATE_LANGUAGE=American'),--三位字符的月份缩写首字母大些
    6to_char(sysdate,'MON','NLS_DATE_LANGUAGE=American'),--三位字符的月份缩写全部大些
    7to_char(sysdate,'month','NLS_DATE_LANGUAGE=American'),--九个字符表示的月份,右边用空格填补全部小写
    8to_char(sysdate,'Month','NLS_DATE_LANGUAGE=American'),--九个字符表示的月份,右边用空格填补首字母大些
    9to_char(sysdate,'MONTH','NLS_DATE_LANGUAGE=American')--九个字符表示的月份,右边用空格填补全部大些
    10FROMdual;
    TO_CHAR(SYSDATE,'MONTH')TO_CHAR(SYSDATE,'MON')TO_CHAR(SYSDATE,'MONTH')TO_CHAR(SYSDATE,'MON','NLS_DATTO_CHAR(SYSDATE,'MON','NLS_DATTO_CHAR(SYSDATE,'MON','NLS_DATTO_CHAR(SYSDATE,'MONTH','NLS_DTO_CHAR(SYSDATE,'MONTH','NLS_DTO_CHAR(SYSDATE,'MONTH','NLS_D
    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    2月2月2月febFebFEBfebruaryFebruaryFEBRUARY
    3.4.RM月份的罗马表示(V在罗马数字中表示5)
    SQL>Selectto_char(sysdate,'RM')fromdual;
    TO_CHAR(SYSDATE,'RM')
    ---------------------
    II
    4周的运算
    4.1WW当年第几周(2009年2月27日为2009年的第9周)
    SQL>Selectto_char(sysdate,'WW')fromdual;
    TO_CHAR(SYSDATE,'WW')
    ---------------------
    09
    SQL>
    4.2W本月第几周(2009年2月27日为2月第4周)
    SQL>Selectto_char(sysdate,'W')fromdual;
    TO_CHAR(SYSDATE,'W')
    --------------------
    4
    6.天的运算
    6.1DDD当年第几天(2009年2月27日为2009年第58天)
    SQL>Selectto_char(sysdate,'DDD')fromdual;
    TO_CHAR(SYSDATE,'DDD')
    ----------------------
    058
    6.2DD当月第几天(2009年2月27日为2月的第27天)
    SQL>Selectto_char(sysdate,'DD')fromdual;
    TO_CHAR(SYSDATE,'DD')
    ---------------------
    27
    6.3D周内第几天(2009年2月27日为这一周的第6天,周五)
    数据字显示和星期对应关系如下)
    1234567
    日一二三四五六
    SQL>Selectto_char(sysdate,'D')fromdual;
    TO_CHAR(SYSDATE,'D')
    --------------------
    6
    6.4DAY中文(英文)的星期几(2009年2月27日为星期五)
    SQL>Selectto_char(sysdate,'DAY')fromdual;
    TO_CHAR(SYSDATE,'DAY')
    ----------------------
    星期五
    6.5DY中文(英文)的星期几(2009年2月27日为星期五)
    SQL>Selectto_char(sysdate,'DY')fromdual;
    TO_CHAR(SYSDATE,'DY')
    ---------------------
    星期五
    6.6日函数运算汇总:
    SQL>Select
    2to_char(sysdate,'D'),
    3to_char(sysdate,'DD'),
    4to_char(sysdate,'DDD'),
    5to_char(sysdate,'dy','NLS_DATE_LANGUAGE=American'),
    6to_char(sysdate,'Dy','NLS_DATE_LANGUAGE=American'),
    7to_char(sysdate,'DY','NLS_DATE_LANGUAGE=American'),
    8to_char(sysdate,'day','NLS_DATE_LANGUAGE=American'),
    9to_char(sysdate,'Day','NLS_DATE_LANGUAGE=American'),
    10to_char(sysdate,'DAY','NLS_DATE_LANGUAGE=American')fromdual;
    TO_CHAR(SYSDATE,'D')TO_CHAR(SYSDATE,'DD')TO_CHAR(SYSDATE,'DDD')TO_CHAR(SYSDATE,'DY','NLS_DATETO_CHAR(SYSDATE,'DY','NLS_DATETO_CHAR(SYSDATE,'DY','NLS_DATETO_CHAR(SYSDATE,'DAY','NLS_DATTO_CHAR(SYSDATE,'DAY','NLS_DATTO_CHAR(SYSDATE,'DAY','NLS_DAT
    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    627058friFriFRIfridayFridayFRIDAY
    SQL>Select
    2to_char(sysdate,'D')||chr(10)||
    3to_char(sysdate,'DD')||chr(10)||
    4to_char(sysdate,'DDD')||chr(10)||
    5to_char(sysdate,'dy','NLS_DATE_LANGUAGE=American')||chr(10)||
    6to_char(sysdate,'Dy','NLS_DATE_LANGUAGE=American')||chr(10)||
    7to_char(sysdate,'DY','NLS_DATE_LANGUAGE=American')||chr(10)||
    8to_char(sysdate,'day','NLS_DATE_LANGUAGE=American')||chr(10)||
    9to_char(sysdate,'Day','NLS_DATE_LANGUAGE=American')||chr(10)||
    10to_char(sysdate,'DAY','NLS_DATE_LANGUAGE=American')fromdual;
    TO_CHAR(SYSDATE,'D')||CHR(10)|
    --------------------------------------------------
    6
    27
    058
    fri
    Fri
    FRI
    friday
    Friday
    FRIDAY
    7小时的运算
    7.1.HH或HH1212进制小时数(16:09分为用12小时制计时为4点)
    SQL>Selectto_char(sysdate,'yyyy-mm-ddhh24:mi:ss'),to_char(sysdate,'HH')fromdual;
    TO_CHAR(SYSDATE,'YYYY-MM-DDHH2TO_CHAR(SYSDATE,'HH')
    ---------------------------------------------------
    2009-02-2810:58:5410
    7.2.HH2424小时制
    SQL>Selectto_char(sysdate+0.5,'yyyy-mm-ddhh24:mi:ss'),to_char(sysdate+0.5,'HH'),to_char(sysdate+0.5,'HH24')fromdual;
    TO_CHAR(SYSDATE+0.5,'YYYY-MM-DTO_CHAR(SYSDATE+0.5,'HH')TO_CHAR(SYSDATE+0.5,'HH24')
    ----------------------------------------------------------------------------------
    2009-02-2822:59:491022
    8上下午的运算
    SQL>SELECTTO_CHAR(SYSTIMESTAMP,'AM','NLS_DATE_LANGUAGE=American'),TO_CHAR(SYSTIMESTAMP,'AM'),
    2TO_CHAR(SYSTIMESTAMP,'PM','NLS_DATE_LANGUAGE=American'),TO_CHAR(SYSTIMESTAMP,'PM'),
    3TO_CHAR(SYSTIMESTAMP+0.5,'PM','NLS_DATE_LANGUAGE=American'),TO_CHAR(SYSTIMESTAMP+0.5,'PM')fromdual;
    TO_CHAR(SYSTIMESTAMP,'AM','NLSTO_CHAR(SYSTIMESTAMP,'AM')TO_CHAR(SYSTIMESTAMP,'PM','NLSTO_CHAR(SYSTIMESTAMP,'PM')TO_CHAR(SYSTIMESTAMP+0.5,'PM',TO_CHAR(SYSTIMESTAMP+0.5,'PM')
    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    AM上午AM上午PM下午
    9MI:一小时中的分钟Minute(0-59).
    SQL>Selectto_char(sysdate,'mi')fromdual;
    TO_CHAR(SYSDATE,'MI')
    ---------------------
    54
    10秒的运算
    10.1SS:一分钟中的秒,SSSSs:从午夜开始过去的秒数
    SQL>Selectto_char(sysdate,'yyyy-mm-ddhh24:mi:ss'),to_char(sysdate,'ss'),to_char(sysdate,'SSSSS')fromdual;
    TO_CHAR(SYSDATE,'YYYY-MM-DDHH2TO_CHAR(SYSDATE,'SS')TO_CHAR(SYSDATE,'SSSSS')
    ---------------------------------------------------------------------------
    2009-02-2811:06:040439964
    10.2这个好像取到6位就行了
    SQL>SELECTto_char(sysdate,'yyyy-mm-ddhh24:mi:ss')||chr(10)||
    2TO_CHAR(SYSTIMESTAMP,'SS.FF1')||chr(10)||TO_CHAR(SYSTIMESTAMP,'SS.FF2')||chr(10)||TO_CHAR(SYSTIMESTAMP,'SS.FF3')||chr(10)||
    3TO_CHAR(SYSTIMESTAMP,'SS.FF4')||chr(10)||TO_CHAR(SYSTIMESTAMP,'SS.FF5')||chr(10)||TO_CHAR(SYSTIMESTAMP,'SS.FF6')||chr(10)||
    4TO_CHAR(SYSTIMESTAMP,'SS.FF7')||chr(10)||TO_CHAR(SYSTIMESTAMP,'SS.FF8')||chr(10)||TO_CHAR(SYSTIMESTAMP,'SS.FF9')fromdual;
    TO_CHAR(SYSDATE,'YYYY-MM-DDHH2
    --------------------------------------------------------------------------------
    2009-02-2811:14:21
    21.8
    21.81
    21.810
    21.8100
    21.81002
    21.810022
    21.8100220
    21.81002200
    21.810022000
    B)trunc()函数,都是对数据向前取整
    1.计算小时,分,秒,毫秒
    SQL>SELECTDAYS,
    2A,
    3TRUNC(A*24)HOURS,
    4TRUNC(A*24*60-60*TRUNC(A*24))MINUTES,
    5TRUNC(A*24*60*60-60*TRUNC(A*24*60))SECONDS,
    6TRUNC(A*24*60*60*100-100*TRUNC(A*24*60*60))MSECONDS
    7FROM(SELECTTRUNC(SYSDATE)DAYS,SYSDATE-TRUNC(SYSDATE)AFROMDUAL);
    DAYSAHOURSMINUTESSECONDSMSECONDS
    -------------------------------------------------------------
    2009-2-280.569791661340300
    2.世纪第一天
    SQL>selectto_char(sysdate,'yyyy-mm-ddhh24:mi:ss')now,trunc(SYSDATE,'cc')fromdual;
    NOWTRUNC(SYSDATE,'CC')
    --------------------------------------
    2009-02-2813:51:302001-1-1
    3.年的第一天
    SQL>selectto_char(sysdate,'yyyy-mm-ddhh24:mi:ss')now,
    2trunc(SYSDATE,'SYYYY'),trunc(SYSDATE,'YYYY'),
    3trunc(SYSDATE,'YEAR'),trunc(SYSDATE,'SYEAR'),
    4trunc(SYSDATE,'YYY'),trunc(SYSDATE,'YY'),trunc(SYSDATE,'Y')
    5fromdual;
    NOWTRUNC(SYSDATE,'SYYYY')TRUNC(SYSDATE,'YYYY')TRUNC(SYSDATE,'YEAR')TRUNC(SYSDATE,'SYEAR')TRUNC(SYSDATE,'YYY')TRUNC(SYSDATE,'YY')TRUNC(SYSDATE,'Y')
    ------------------------------------------------------------------------------------------------------------------------------------------------------------------
    2009-02-2813:52:512009-1-12009-1-12009-1-12009-1-12009-1-12009-1-12009-1-1
    4.季度第一天
    SQL>selectto_char(sysdate,'yyyy-mm-ddhh24:mi:ss')now,trunc(SYSDATE,'q'),trunc(SYSDATE+100,'q')fromdual;
    NOWTRUNC(SYSDATE,'Q')TRUNC(SYSDATE+100,'Q')
    -----------------------------------------------------------
    2009-02-2814:07:032009-1-12009-4-1
    5.月份的第一天
    SQL>selectto_char(sysdate,'yyyy-mm-ddhh24:mi:ss')now,trunc(SYSDATE,'MONTH'),trunc(SYSDATE,'MON'),trunc(SYSDATE,'MM'),trunc(SYSDATE,'RM')fromdual;
    NOWTRUNC(SYSDATE,'MONTH')TRUNC(SYSDATE,'MON')TRUNC(SYSDATE,'MM')TRUNC(SYSDATE,'RM')
    ---------------------------------------------------------------------------------------------------
    2009-02-2814:09:082009-2-12009-2-12009-2-12009-2-1
    6周
    SQL>selectto_char(sysdate,'yyyy-mm-ddhh24:mi:ss')now,trunc(SYSDATE,'WW'),trunc(SYSDATE,'W')fromdual;
    NOWTRUNC(SYSDATE,'WW')TRUNC(SYSDATE,'W')
    --------------------------------------------------------
    2009-02-2814:13:432009-2-262009-2-22
    6.2周的第一天
    SQL>selectto_char(sysdate,'yyyy-mm-ddhh24:mi:ss')now,trunc(SYSDATE,'DAY'),trunc(SYSDATE,'DY'),trunc(SYSDATE,'D')fromdual;
    NOWTRUNC(SYSDATE,'DAY')TRUNC(SYSDATE,'DY')TRUNC(SYSDATE,'D')
    ----------------------------------------------------------------------------
    2009-02-2814:24:312009-2-222009-2-222009-2-22
    9.天
    SQL>selectto_char(sysdate,'yyyy-mm-ddhh24:mi:ss')now,trunc(SYSDATE,'DDD'),trunc(SYSDATE,'DD'),trunc(SYSDATE,'J')fromdual;
    NOWTRUNC(SYSDATE,'DDD')TRUNC(SYSDATE,'DD')TRUNC(SYSDATE,'J')
    ----------------------------------------------------------------------------
    2009-02-2814:21:412009-2-282009-2-282009-2-28
    10小时
    SQL>selectto_char(sysdate,'yyyy-mm-ddhh24:mi:ss')now,trunc(SYSDATE,'HH'),trunc(SYSDATE,'HH12'),trunc(SYSDATE,'HH24')fromdual;
    NOWTRUNC(SYSDATE,'HH')TRUNC(SYSDATE,'HH12')TRUNC(SYSDATE,'HH24')
    --------------------------------------------------------------------------------
    2009-02-2814:26:392009-2-2814:00:002009-2-2814:00:002009-2-2814:00:00
    11分
    SQL>selectto_char(sysdate,'yyyy-mm-ddhh24:mi:ss')now,trunc(SYSDATE,'MI')fromdual;
    NOWTRUNC(SYSDATE,'MI')
    --------------------------------------
    2009-02-2814:31:372009-2-2814:31:00
    C)round()函数和trunc函数类似,部分取值向后取整
    SQL>selectto_char(sysdate,'yyyy-mm-ddhh24:mi:ss')now,round(SYSDATE,'cc')fromdual;
    NOWROUND(SYSDATE,'CC')
    --------------------------------------
    2009-02-2814:33:102001-1-1
    SQL>selectround(SYSDATE,'cc')fromdual;
    ROUND(SYSDATE,'CC')
    -------------------
    2001-1-1
    SQL>selectto_char(sysdate,'yyyy-mm-ddhh24:mi:ss')now,
    2round(SYSDATE,'SYYYY'),round(SYSDATE,'YYYY'),
    3round(SYSDATE,'YEAR'),round(SYSDATE,'SYEAR'),
    4round(SYSDATE,'YYY'),round(SYSDATE,'YY'),round(SYSDATE,'Y')
    5fromdual;
    NOWROUND(SYSDATE,'SYYYY')ROUND(SYSDATE,'YYYY')ROUND(SYSDATE,'YEAR')ROUND(SYSDATE,'SYEAR')ROUND(SYSDATE,'YYY')ROUND(SYSDATE,'YY')ROUND(SYSDATE,'Y')
    ------------------------------------------------------------------------------------------------------------------------------------------------------------------
    2009-02-2814:33:112009-1-12009-1-12009-1-12009-1-12009-1-12009-1-12009-1-1
    SQL>selectto_char(sysdate,'yyyy-mm-ddhh24:mi:ss')now,round(SYSDATE,'Q')fromdual;
    NOWROUND(SYSDATE,'Q')
    -------------------------------------
    2009-02-2814:33:112009-4-1
    SQL>selectto_char(sysdate,'yyyy-mm-ddhh24:mi:ss')now,round(SYSDATE,'q'),round(SYSDATE+100,'q')fromdual;
    NOWROUND(SYSDATE,'Q')ROUND(SYSDATE+100,'Q')
    -----------------------------------------------------------
    2009-02-2814:33:112009-4-12009-7-1
    SQL>selectto_char(sysdate,'yyyy-mm-ddhh24:mi:ss')now,round(SYSDATE,'MONTH'),round(SYSDATE,'MON'),round(SYSDATE,'MM'),round(SYSDATE,'RM')fromdual;
    NOWROUND(SYSDATE,'MONTH')ROUND(SYSDATE,'MON')ROUND(SYSDATE,'MM')ROUND(SYSDATE,'RM')
    ---------------------------------------------------------------------------------------------------
    2009-02-2814:33:112009-3-12009-3-12009-3-12009-3-1
    SQL>selectto_char(sysdate,'yyyy-mm-ddhh24:mi:ss')now,round(SYSDATE,'WW'),round(SYSDATE,'W')fromdual;
    NOWROUND(SYSDATE,'WW')ROUND(SYSDATE,'W')
    --------------------------------------------------------
    2009-02-2814:33:112009-2-262009-3-1
    SQL>selectto_char(sysdate,'yyyy-mm-ddhh24:mi:ss')now,round(SYSDATE,'DDD'),round(SYSDATE,'DD'),round(SYSDATE,'J')fromdual;
    NOWROUND(SYSDATE,'DDD')ROUND(SYSDATE,'DD')ROUND(SYSDATE,'J')
    ----------------------------------------------------------------------------
    2009-02-2814:33:112009-3-12009-3-12009-3-1
    SQL>selectto_char(sysdate,'yyyy-mm-ddhh24:mi:ss')now,round(SYSDATE,'DAY'),round(SYSDATE,'DY'),round(SYSDATE,'D')fromdual;
    NOWROUND(SYSDATE,'DAY')ROUND(SYSDATE,'DY')ROUND(SYSDATE,'D')
    ----------------------------------------------------------------------------
    2009-02-2814:33:112009-3-12009-3-12009-3-1
    SQL>selectto_char(sysdate,'yyyy-mm-ddhh24:mi:ss')now,round(SYSDATE,'HH'),round(SYSDATE,'HH12'),round(SYSDATE,'HH24')fromdual;
    NOWROUND(SYSDATE,'HH')ROUND(SYSDATE,'HH12')ROUND(SYSDATE,'HH24')
    --------------------------------------------------------------------------------
    2009-02-2814:33:112009-2-2815:00:002009-2-2815:00:002009-2-2815:00:00
    SQL>selectto_char(sysdate,'yyyy-mm-ddhh24:mi:ss')now,round(SYSDATE,'MI')fromdual;
    NOWROUND(SYSDATE,'MI')
    --------------------------------------
    2009-02-2814:33:112009-2-2814:33:00
    D)TO_DATE使用详解
    时常使用to_date函数来查询特定时间内的数据。
    语法:
    TO_DATE(x[,format])用于将字符串x转换为时间值,该函数可以指定一个可选的字符串format参数来说明x的格式。
    如果没有指定format参数,日期就使用默认的数据库格式(通常是DD-MON-YYYY或DD-MON-YY)。
    注意:
    数据库参数NLS_DATE_FORMAT指定了默认的日期格式。可以修改NLS_DATE_FORMAT的设置。
    2.指定时间
    当然,在时间值中也可以指定时间。如果在时间值中没有指定时间,那么时间值的时间部分默认为12:00:00A.M.。时间可以使用前面表5-2所示的各种格式。时间格式的一个例子是HH24:MI:SS,其中:
    ●HH24是一个2位数字,表示24小时格式中的小时数,该值的范围为00~23。
    ●MI是一个2位数字,表示分钟,该值的范围为00~59。
    ●SS是一个2位数字,表示秒,该值的范围为00~59。
    使用HH24:MI:SS格式的一个时间的例子是19:23:36。使用这个时间的一个完整时间值是:
    05-FEB-196819:32:36
    这个时间值的格式为:
    DD-MON-YYYYHH24:MI:SS
    to_data(date&;time,format)
    其中第一个参数date&;time是我们要查询的具体日期和时间,比如:2006年5月21日。但是这个时间也分
    为很多种精度的,比如:
    2006年5月21日
    2006年5月21日17:24
    2006年5月21日17:34分55秒
    这个精度要根据实际情况来定。
    另外一个参数format决定的日期的表示方法,比如:
    2006年5月21日可以表示为:060521、20060521、2006FEB21等等
    而他们对应的format为
    060521YYMMDD
    20060521YYYYMMDD
    2006FEB21YYYYMONDD
    示例:
    select*frombookwhereintime=to_date('2003/02/17/17/53/55','YYYY/MM/DD/HH24/MI/SS')
    上面的语句是查询:2003年8月17日下午5点53分55秒,入库的书本。
    其实用下面的写法也是可以的
    select*frombookwhereintime=to_date('20030217175355','YYYYMMDDHH24MISS')
    select*frombookwhereintime=to_date
    ('2003-02-17-17-53-55','YYYY-MM-DD-HH24/-I-SS')
    中间的连字符"/"、":"或是"-",并不影响表达,只是为了更加容易看清楚。
    表示年份有以下几种格式,及这种格式对应的表达方法:
    2003年为例
    YYYY2003
    YYY003
    YY03
    月份表示格式及表达方法:
    二月分为例
    MM08
    RMIIX(罗马数字)
    MONTHfebruary
    MONfeb
    日期的格式及表达方法:
    17号为例
    DDD762月的17日在本年度(不是闰年的情况)是多少天
    DD17在本月中是号(17号)
    D在这一个星期是哪天
    星期的格式和表示方法:
    星期一为例
    DAYmonday全名显示
    DYmon缩写
    小时的格式和表示方法:
    HH2418二十四小时制
    分钟的格式和表示方法:
    MI32该小时32分钟
    秒的表示方法
    SS28该分钟28秒
    二。其他运算函数
    1、add_months()用于从一个日期值增加或减少一些月份
    SQL>selectadd_months(sysdate,-12)"LastYear",to_char(sysdate,'yyyy-mm-ddhh24:mi:ss')now,add_months(sysdate,12)"NextYear"fromdual;
    LastYearNOWNextYear
    -------------------------------------------------------
    2008-2-2914:41:542009-02-2814:41:542010-2-2814:41:54
    2、current_date()返回当前会放时区中的当前日期
    date_value:=current_date
    SQL>columnsessiontimezonefora15
    SQL>selectsessiontimezone,current_datefromdual;
    SESSIONTIMEZONECURRENT_DA
    -------------------------
    +08:0013-11月-03
    SQL>altersessionsettime_zone='-11:00'
    2/
    会话已更改。
    SQL>selectsessiontimezone,current_timestampfromdual;
    SESSIONTIMEZONECURRENT_TIMESTAMP
    ---------------------------------------------------
    -11:0012-11月-0304.59.13.668000下午-11:00
    SQL>
    3、current_timestamp()以timestampwithtimezone数据类型返回当前会放时区中的当前日期
    timestamp_with_time_zone_value:=current_timestamp([timestamp_precision])
    SQL>columnsessiontimezonefora15
    SQL>columncurrent_timestampformata36
    SQL>selectsessiontimezone,current_timestampfromdual;
    SESSIONTIMEZONECURRENT_TIMESTAMP
    ---------------------------------------------------
    +08:0013-11月-0311.56.28.160000上午+08:00
    SQL>altersessionsettime_zone='-11:00'
    2/
    会话已更改。
    SQL>selectsessiontimezone,current_timestampfromdual;
    SESSIONTIMEZONECURRENT_TIMESTAMP
    ---------------------------------------------------
    -11:0012-11月-0304.58.00.243000下午-11:00
    4、dbtimezone()返回时区
    varchar_value:=dbtimezone
    SQL>selectdbtimezonefromdual;
    DBTIMEZONE
    ----------
    +08:00
    5、extract()找出日期或间隔值的字段值
    date_value:=extract(date_fieldfrom[datetime_value|interval_value])
    SQL>selectextract(monthfromsysdate)"ThisMonth"fromdual;
    ThisMonth
    ----------
    2
    SQL>selectextract(yearfromadd_months(sysdate,36))"3YearsOut"fromdual;
    3YearsOut
    -----------
    2012
    6、last_day()返回包含了日期参数的月份的最后一天的日期
    date_value:=last_day(date_value)
    SQL>selectlast_day(sysdate)"Lastdayofthismonth"fromdual;
    Lastdayofthismonth
    ----------------------
    2009-2-2814:54:09
    7、localtimestamp()返回会话中的日期和时间
    timestamp_value:=localtimestamp
    SQL>columnlocaltimestampformata28
    SQL>selectlocaltimestampfromdual;
    LOCALTIMESTAMP
    ----------------------------
    28-2月-0902.54.55.266868下午
    SQL>selectlocaltimestamp,current_timestampfromdual;
    LOCALTIMESTAMPCURRENT_TIMESTAMP
    ----------------------------------------------------------------
    28-2月-0902.56.39.923571下午28-2月-0902.56.39.923571下午+08:00
    8、months_between()判断两个日期之间的月份数量
    number_value:=months_between(date_value,date_value)
    SQL>selectmonths_between(sysdate,date'1971-05-18')fromdual;
    MONTHS_BETWEEN(SYSDATE,DATE'19
    ------------------------------
    453.342685185185
    SQL>selectmonths_between(sysdate,date'2001-01-01')fromdual;
    MONTHS_BETWEEN(SYSDATE,DATE'20
    ------------------------------
    97.8910812425329
    
    9、next_day()给定一个日期值,返回由第二个参数指出的日子第一次出现在的日期值(应返回相应日子的名称字符串)
    常用
    1.找出今年的天数
    SQL>selectadd_months(trunc(sysdate,'year'),12)-trunc(sysdate,'year')fromdual;
    ADD_MONTHS(TRUNC(SYSDATE,'YEAR
    ------------------------------
    365
    SQL>selectadd_months(trunc(to_date('20081201','yyyymmdd'),'year'),12)-trunc(to_date('20081201','yyyymmdd'),'year')fromdual;
    ADD_MONTHS(TRUNC(TO_DATE('2008
    ------------------------------
    366
    闰年的处理方法
    to_char(last_day(to_date('02'||:year,'mmyyyy')),'dd')
    如果是28就不是闰年
    
  • 上一篇资讯: SQL时间(1)
  • 下一篇资讯: sql日期(1)
  • 设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师