zoukankan      html  css  js  c++  java
  • 1.日期_星期

    /*************************************************
    一、主题:日期_星期


    *************************************************/

    1.DATEPART(datepart,date)

    datepart 缩写
    年 yy, yyyy
    季度 qq, q
    月 mm, m
    年中的日 dy, y
    日 dd, d
    周 wk, ww
    星期 dw, w
    小时 hh
    分钟 mi, n
    秒 ss, s
    毫秒 ms
    微妙 mcs
    纳秒 ns

    2.查询本周的所有日期
     SELECT Convert( varchar(10), GETDATE() + (number -7), 121)
       FROM master..spt_values
      WHERE  type='P'
        AND number <= 14  AND YEAR (GETDATE() + (number -7)) = YEAR( GETDATE() )
        AND DATEPART(ww, GETDATE()+ (number -7))  = DATEPART(ww, GETDATE())
       
    3.得到某一天是星期几
    select
      case datepart(dw,getdate())
      when 1 then '星期天'
      when 2 then '星期一'
      when 3 then '星期二'
      when 4 then '星期三'
      when 5 then '星期四'
      when 6 then '星期五'
      when 7 then '星期六'
      end

    4.查询当天为星期几比较
    SELECT  DATEADD(WEEKDAY,2,GETDATE()),--2014-07-05 10:51:29.397 --当前时间加两天
            DATEADD(DAY,2,GETDATE()) ,  --2014-07-05 10:51:29.397 --当前时间加两天
            datepart(weekday,getdate()),--5  --数字表示星期几:周日为1,周一为2
            datename(WEEKDAY,GETDATE()), --Thursday  --英文表示星期几:如Thursday,Friday
            DATEADD(DAY,7-DATEPART(WEEKDAY,GETDATE()),GETDATE()), --所在周的第几天,其中的数字就是
            DATEADD(DAY,4-DATEPART(WEEKDAY,GETDATE()),GETDATE()) --所在周的第几天,其中的数字就是
           
    ================= 算法      
    SELECT
           DATEPART(WEEKDAY,GETDATE()),--当天是周的第几天? N表示
           4-DATEPART(WEEKDAY,GETDATE())--想要求本周的第4天。与N 的差距值:4-N,得到X天
           DATEADD(DAY,4-DATEPART(WEEKDAY,GETDATE()),GETDATE()), --当天的时间加上X天,即为要求的日期
      
       Y= WEEKDAY:X + DATE:N,先求出差距天数,这个天数再作一下日期处理
    ================  
    5.来源:http://bbs.csdn.net/topics/390111500

    DECLARE @Date DATETIME = GETDATE();
     
    SELECT @Date AS '目前时间'
    ,DATEADD(DD,-1,@Date) AS '前一天'
    ,DATEADD(DD,1,@Date) AS '后一天'
    /*月计算*/
    ,DATEADD(MONTH,DATEDIFF(MONTH,0,@Date),0) AS '月初'--在SQL Server中0 代表1900-01-01,通过月运算,保证日恒久为1号
    ,DATEADD(DD,-1,DATEADD(MONTH,1+DATEDIFF(MONTH,0,@Date),0)) AS '月末(精确到天)'--找到下月初再扣减1天,建议使用DATEADD而不要直接“-1”
    ,DATEADD(SS,-1,DATEADD(MONTH,1+DATEDIFF(MONTH,0,@Date),0)) AS '月末(精确到datetime的小数位)'
    ,DATEADD(MONTH,DATEDIFF(MONTH,0,@Date)-1,0) AS '上月第一天'
    ,DATEADD(DAY,-1,DATEADD(DAY,1-DATEPART(DAY,@Date),@Date)) AS '上月最后一天'
    ,DATEADD(MONTH,DATEDIFF(MONTH,0,@Date)+1,0) AS '下月第一天'
    ,DATEADD(DAY,-1,DATEADD(MONTH,2,DATEADD(DAY,1-DATEPART(DAY,@Date),@Date))) AS '下月最后一天'
    /*周计算*/
    ,DATEADD(WEEKDAY,1-DATEPART(WEEKDAY,@Date),@Date) AS '本周第一天(周日)'--注意此处与@@datefirst的值有关
    ,DATEADD(WEEK,DATEDIFF(WEEK,-1,@Date),-1) AS '所在星期的星期日'--注意此处与@@datefirst的值有关
    ,DATEADD(DAY,2-DATEPART(WEEKDAY,@Date),@Date) AS '所在星期的第二天'--注意此处与@@datefirst的值有关,其他天数类推
    ,DATEADD(WEEK,-1,DATEADD(DAY,1-DATEPART(WEEKDAY,@Date),@Date)) AS '上个星期第一天(周日)'--注意此处与@@datefirst的值有关
    ,DATEADD(WEEK,1,DATEADD(DAY,1-DATEPART(WEEKDAY,@Date),@Date)) AS '下个星期第一天(星期日)'--注意此处与@@datefirst的值有关
    ,DATENAME(WEEKDAY,@Date) AS '本日是周几'
    ,DATEPART(WEEKDAY,@Date) AS '本日是周几'--返回值 1-星期日,2-星期一,3-星期二......7-星期六
    /*年度计算*/
    ,DATEADD(YEAR,DATEDIFF(YEAR,0,@Date),0) AS '年初'
    ,DATEADD(YEAR,DATEDIFF(YEAR,-1,@Date),-1) AS '年末'
    ,DATEADD(YEAR,DATEDIFF(YEAR,-0,@Date)-1,0) AS '去年年初'
    ,DATEADD(YEAR,DATEDIFF(YEAR,-0,@Date),-1) AS '去年年末'
    ,DATEADD(YEAR,1+DATEDIFF(YEAR,0,@Date),0) AS '明年年初'
    ,DATEADD(YEAR,1+DATEDIFF(YEAR,-1,@Date),-1) AS '明年年末'
    /*季度计算*/
    ,DATEADD(QUARTER,DATEDIFF(QUARTER,0,@Date),0) AS '本季季初'
    ,DATEADD(QUARTER,1+DATEDIFF(QUARTER,0,@Date),-1) AS '本季季末'
    ,DATEADD(QUARTER,DATEDIFF(QUARTER,0,@Date)-1,0) AS '上季季初'
    ,DATEADD(QUARTER,DATEDIFF(QUARTER,0,@Date),-1) AS '上季季末'
    ,DATEADD(QUARTER,1+DATEDIFF(QUARTER,0,@Date),0) AS '下季季初'
    ,DATEADD(QUARTER,2+DATEDIFF(QUARTER,0,@Date),-1) AS '下季季末'

  • 相关阅读:
    linux gcc安装
    重装win7后如何恢复ubuntu引导
    Eclipse搭建Android开发环境(安装ADT,Android4.4.2)
    mysql变量使用总结
    最快得到MYSQL两个表的差集
    mysqldb
    更改时间 (时分秒)
    使用命令转移文件
    报喜啦~过了!
    Jmeter接口测试示例
  • 原文地址:https://www.cnblogs.com/zihuancc/p/3821992.html
Copyright © 2011-2022 走看看