zoukankan      html  css  js  c++  java
  • sql server 查询日期中的常用语句, 例如本周第一天, 年内的第几周,有用

    --本周第一天   
    SELECT DATEADD(Day,1-(DATEPART(Weekday,getdate())+@@DATEFIRST-1)%7,getdate())  
    --or   
    select dateadd(wk, datediff(wk,0,getdate()), 0)  
    --本周第一天   
    select dateadd(wk, datediff(wk,0,getdate()), 6)  
       
    --上月第一天   
    SELECT CONVERT(CHAR(10),DATEADD(month,-1,DATEADD(dd,-DAY(GETDATE())+1,GETDATE())),111)  
    --上月最后一天   
    SELECT CONVERT(CHAR(10),DATEADD(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()),0)),111)+' 23:59:59'  
    --本月第一天   
    select dateadd(dd,-datepart(dd,getdate())+1,getdate())  
    --本月最后一天   
    select dateadd(dd,-datepart(dd,getdate()) ,dateadd(mm,1,getdate()))  
    --本月天数   
    select datediff(dd,dateadd(dd,-datepart(dd,getdate())+1,getdate()), dateadd(dd,-datepart(dd,getdate())+1,dateadd(mm,1,getdate())))  
    --or   
    select datepart(dd,dateadd(dd,-1,dateadd(mm,1,cast(cast(year(getdate()) as varchar)+'-'+cast(month(getdate()) as varchar)+'-01' as datetime))))  
       
    --下月第一天   
    select dateadd(dd,-datepart(dd,getdate())+1,dateadd(mm,1,getdate()))  
    --下月最后一天   
    SELECT CONVERT(CHAR(10),DATEADD(ms,-3,DATEADD(mm,DATEDIFF(m,0,getdate())+2,0)),111)+' 23:59:59'  
    --季度第一天   
    SELECT   DATEADD(qq,   DATEDIFF(qq,0,getdate()),   0)   
    --季度最后一天(直接推算法)   
    SELECT DATEADD(Day,-1,CONVERT(char(8),DATEADD(Month,1+DATEPART(Quarter,getdate())*3-Month(getdate()),getdate()),120)+'1')  
    --季度的最后一天(CASE判断法)   
    select DATEADD(Month,DATEPART(Quarter,getdate())*3-Month(getdate()),getdate())  
       
    --本月第一个星期一   
    SELECT DATEADD(wk, DATEDIFF(wk, '', DATEADD(dd, 6 - DAY(getdate()), getdate())), '')   
    --去年最后一天   
    SELECT   dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0))   
    --今年第一天   
    SELECT   DATEADD(yy,   DATEDIFF(yy,0,getdate()),   0)   
    --今年最后一天   
    SELECT  dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1,0))  
       
    --指定日期所在周的任意一天   
    SELECT DATEADD(Day,@number-DATEPART(Weekday,@dt),@dt)--5.指定日期所在周的任意星期几   
    --A.  星期天做为一周的第1天   
    SELECT DATEADD(Day,@number-(DATEPART(Weekday,@dt)+@@DATEFIRST-1)%7,@dt)  
    --B.  星期一做为一周的第1天   
    SELECT DATEADD(Day,@number-(DATEPART(Weekday,@dt)+@@DATEFIRST-2)%7-1,@dt)  
    ---周内的第几日   
    select datepart(weekday,getdate()) as 周内的第几日  
    --年内的第几周   
    select datepart(week,getdate()) as 年内的第几周  
    --年内的第几季   
    select datepart(quarter,getdate()) as 年内的第几季  
       
       
    --判断某天是当月的第几周的sql函数    
    CREATE   FUNCTION   WeekOfMonth(@day datetime)     
    RETURNS int  
    AS   
    begin  
       
    ----declare @day datetime   
    declare @num int  
    declare @Start datetime  
    declare @dd int  
    declare @dayofweek char(8)  
    declare @dayofweek_num char(8)  
    declare @startWeekDays int  
    ---set @day='2009-07-05'   
    if datepart(dd,@day)=1  
    return 1  
    else  
    set @Start= (SELECT   DATEADD(mm,   DATEDIFF(mm,0,@day),   0)) --一个月第一天的   
    set @dayofweek= (datename(weekday,@Start)) ---得到本月第一天是周几   
    set @dayofweek_num=(select (case @dayofweek when '星期一' then 2  
    when '星期二' then 3  
    when '星期三' then 4  
    when '星期四' then 5  
    when '星期五' then 6  
    when '星期六' then 7  
    when '星期日' then 1  
    end))  
    set @dayofweek_num= 7-@dayofweek_num+1 ---得到本月的第一周一共有几天   
    ---print @dayofweek_num   
       set @dd=datepart(dd,@day----得到今天是这个月的第几天   
    --print @dd   
    if @dd<=@dayofweek_num --小于前一周的天数   
    return 1  
    else   
    set @dd=@dd-@dayofweek_num  
    if @dd % 7=0  
         begin  
           set @num=@dd / 7  
            return @num+1  
              
         end  
       else --if @dd % 7<>0   
          
         set @num=@dd / 7  
    set @num=@num+1+1  
           return @num  
    end  
  • 相关阅读:
    SVG ViewBox
    svg中改变class调用的线条颜色
    SVG 箭头线绘制
    Spring3中的mvc:interceptors标签配置拦截器
    MyBatis入门学习
    MyBatis 配置sql语句输出
    使用iBATIS3.0完成增删改查
    iBatis简单入门教程
    SpringMVC常用注解,返回方式,路径匹配形式,验证
    springMVC 返回类型选择 以及 SpringMVC中model,modelMap.request,session取值顺序
  • 原文地址:https://www.cnblogs.com/zhangzhifeng/p/3899655.html
Copyright © 2011-2022 走看看