sql server 查詢日期中的常用語句, 例如本周第一天, 年內的第幾周,有用

來源:互聯網
上載者:User

標籤:color   io   art   ar   cti   div   line   演算法   

--本周第一天    SELECT  DATEADD( Day ,1-(DATEPART(Weekday,getdate())[email protected]@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)[email protected]@DATEFIRST-1)%7,@dt)   --B.  星期一做為一周的第1天    SELECT  DATEADD( Day ,@number-(DATEPART(Weekday,@dt)[email protected]@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= [email protected]_num+1  ---得到本月的第一周一共有幾天    ---print @dayofweek_num        set  @dd=datepart(dd,@ day ----得到今天是這個月的第幾天    --print @dd    if @dd<[email protected]_num  --小於前一周的天數    return  1   else    set  @[email protected]@dayofweek_num   if @dd % 7=0         begin           set  @[email protected] / 7            return  @num+1                    end       else  --if @dd % 7<>0                 set  @[email protected] / 7   set  @[email protected]+1+1           return  @num   end  
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.